Comment puis-je exclure une chaîne de caractères à partir de python regex

Je suis d'essayer d'analyser /etc/mtab mais exclure /boot. J'ai pensé que peut-être non-capture de groupes serait la voie à suivre, mais il ne fonctionne pas comme je l'espérais. C'est la regex, j'ai construit:

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)

De sortie:

('/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')

Je suis assez confiant sur le | est faux (et, évidemment, plus c'est mal) mais a frappé un barrage routier.

Je suis à la recherche pour tous les matches /[\w/:-]+ mais exclure correspond à /boot

Suggestions?

  • Les expressions régulières ne sont pas bonnes à l'exclusion de choses. Le faire dans une autre case.
InformationsquelleAutor sal slane | 2013-04-04