Ik vind grep -v leuk. Ik gebruik het de hele tijd. Maar ik ben ook bezig met tekstverwerking in Python, en er is één cruciaal ding dat ik mis. 
 Meestal gebruik ik grep -v om vreemde dingen uit tekst. 
Bijvoorbeeld,
$ grep -v "[a-z]" # (I manually review this output to confirm that I don"t want those lines) $ grep "[a-z]" > linesiwanted 
 Maar hoe kan ik het complement van een regex in Python matchen? Bijvoorbeeld, het complement van \w? 
Reacties
- zie stackoverflow.com/questions/164414/…
 - Daar ' sa soortgelijke discussie over grep in python op SO: stackoverflow.com/questions/1921894/grep-and-python , deze vraag meer specifieke versie daarvan
 - \ w = elk woord char \ W = elk niet-woord char
 
Answer
 Een regex in Python retourneert ofwel de search of match methoden een Match object of None. Voor grep -v equivalent, kunt u gebruiken: 
 import re for line in sys.stdin: if re.search(r"[a-z]", line) is None: sys.stdout.write(line)  
Of beknopter:
 import re; sys.stdout.writelines([line for line in sys.stdin if re.search(r"[a-z]", line) is None])  
Reacties
- +1 de SO-link in de opmerking noemt negatief-lookahead beweringen, maar om eerlijk te zijn denk ik dat je fragment veel verstandiger en eleganter is. bedankt.
 - het blijkt dat je ook [^ az] kunt gebruiken om het complement van de set [az] te matchen.
 
Antwoord
 Het blijkt dat je [^ az] gewoon kunt gebruiken om grep -v [a-z] te bedoelen. 
Ik gebruik het als :
 #!/usr/bin/env python # coding=UTF-8 import sys, re for file in sys.argv[1:]: f = open(file) string = f.read() regex = re.compile("[^a-z]") subs = regex.sub("", string) f.close() print subs  
Reacties
-   Deze zijn niet hetzelfde.  
grep -v '[a-z]'betekent " sluit elke regel uit die een teken in het bereik bevat vanatotz" maar jij ' ve geïmplementeerdgrep '[^a-z]'wat betekent dat " elke regel bevat met een teken niet in het bereik vanatotz. " Als een regelabc123, dan zal uw vraag het foutief afdrukken omdat1voldoet aan die criteria.grep -v '[a-z]'zal deze regel niet afdrukken omdatavoldoet aan de ontkende criteria.