Lubię grep -v
. Używam tego cały czas. Ale przetwarzam też tekst w Pythonie i brakuje mi jednej kluczowej rzeczy.
Zazwyczaj używam grep -v
do usuwania obcych tekstów.
Na przykład,
$ grep -v '[a-z]'
# (I manually review this output to confirm that I don't want those lines)
$ grep '[a-z]' > linesiwanted
Ale jak dopasować dopełnienie wyrażenia regularnego w Pythonie? Na przykład uzupełnienie \w
?
text-processing
grep
regular-expression
python
ixtmixilix
źródło
źródło
Odpowiedzi:
Wyrażenie regularne w Pythonie ( metody
search
lubmatch
) zwracaMatch
obiekt lubNone
. Dlagrep -v
odpowiednika możesz użyć:Lub bardziej zwięźle:
źródło
Okazuje się, że możesz po prostu użyć [^ az]
grep -v [a-z]
.Używam tego jak:
źródło
grep -v '[a-z]'
oznacza „wyklucz dowolną linię zawierającą znak z zakresu oda
doz
”, ale zaimplementowałeśgrep '[^a-z]'
co oznacza „dołącz dowolną linię zawierającą znak spoza zakresu oda
doz
”. Jeśli wiersz zawiera,abc123
zapytanie zostanie wydrukowane błędnie, ponieważ1
spełnia te kryteria.grep -v '[a-z]'
nie wydrukuje tego wiersza, ponieważa
spełnia zanegowane kryteria.