我試圖解析/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