我试图解析/etc/mtab
,但排除/boot
。我认为也许没有捕获的团体会走,但它并不像我预期的那样工作。这是我构建的正则表达式:如何从python正则表达式中排除特定的字符串
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')
我很有信心的|
是错误的(显然更多的是错的),但已经打了一个路障。
我正在寻找所有比赛为/[\w/:-]+
,但不包括火柴/boot
建议?
正则表达式不擅长排除事物。做一个单独的检查。 – Barmar 2013-04-04 06:01:54