gpt4 book ai didi

python - 如何从 python 正则表达式中排除特定字符串

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:09 25 4
gpt4 key购买 nike

我正在尝试解析 /etc/mtab 但排除 /boot。我想也许非捕获组是可行的方法,但它并没有像我预期的那样工作。这是我构建的正则表达式:

proc = subprocess.Popen(["ssh", server, "cat", mtab],stdout = subprocess.PIPE)
for line in proc.stdout:
fsMatch = re.search(r'([\w/:]+) (/([\w/:-]+)|(?:boot)) (nfs|ext3)', line)
if fsMatch:
print fsMatch.group(1,2,4)

输出:

('/dev/sda1', '/boot', 'ext3')
('/dev/mapper/foo1', '/export/foo1', 'ext3')
('/dev/mapper/foo2', '/export/foo2', 'ext3')
('/dev/mapper/foo3', '/export/foo3', 'ext3')
('/dev/mapper/foo4', '/export/foo4', 'ext3')
('/dev/mapper/foo5', '/export/foo5', 'ext3')
('servernfs:/install', '/mnt', 'nfs')

我非常有信心 | 是错误的(显然 more 是错误的)但是遇到了障碍。

我正在寻找 /[\w/:-]+ 的所有匹配项,但排除与 /boot 的匹配项>

建议?

最佳答案

您需要使用负向后看或负向前视,如 here 所述提示如下:

r'^(?!/boot).*$'

如果您需要捕获“servernfs:”而不是“servernfs:/boot”,则需要添加一点“|”和顶部某处的“([a-z]+:)”(在“^”之后)

关于python - 如何从 python 正则表达式中排除特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15803574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com