Ich mag grep -v
. Ich benutze es die ganze Zeit. Aber ich mache auch eine Textverarbeitung in Python, und es gibt eine entscheidende Sache, die mir fehlt.
Normalerweise entferne ich grep -v
fremde Dinge aus dem Text.
Zum Beispiel,
$ grep -v '[a-z]'
# (I manually review this output to confirm that I don't want those lines)
$ grep '[a-z]' > linesiwanted
Aber wie passe ich das Komplement eines Regex in Python an? Zum Beispiel die Ergänzung von \w
?
text-processing
grep
regular-expression
python
ixtmixilix
quelle
quelle
Antworten:
Ein regulärer Ausdruck in Python, entweder die Methode
search
odermatch
, gibt einMatch
Objekt oder zurückNone
. Für einegrep -v
Entsprechung könnten Sie Folgendes verwenden:Oder genauer:
quelle
Es stellt sich heraus, dass Sie mit [^ az] nur meinen können
grep -v [a-z]
.Ich benutze es wie folgt:
quelle
grep -v '[a-z]'
bedeutet "alle Zeilen ausschließen, die ein Zeichen im Bereich vona
bis enthaltenz
", aber Sie haben implementiertgrep '[^a-z]'
was bedeutet "eine Zeile einschließen, die ein Zeichen enthält, das nicht im Bereich vona
bis liegtz
". Wenn eine Zeile vorhanden ist,abc123
wird sie von Ihrer Abfrage fälschlicherweise gedruckt, da1
diese Kriterien erfüllt sind.grep -v '[a-z]'
Diese Zeile wird nicht gedruckt, daa
die negierten Kriterien erfüllt sind.