Eu gosto grep -v
. Eu uso isso o tempo todo. Mas também estou processando texto em python e há uma coisa crucial que me falta.
Geralmente eu uso grep -v
para tirar coisas estranhas do texto.
Por exemplo,
$ grep -v '[a-z]'
# (I manually review this output to confirm that I don't want those lines)
$ grep '[a-z]' > linesiwanted
Mas como faço para corresponder ao complemento de uma regex em Python? Por exemplo, o complemento de \w
?
text-processing
grep
regular-expression
python
ixtmixilix
fonte
fonte
Respostas:
Um regex em Python, quer a
search
oumatch
métodos, os retornos umMatch
objecto ouNone
. Paragrep -v
equivalente, você pode usar:Ou, mais concisamente:
fonte
Acontece que você pode usar [^ az] para significar
grep -v [a-z]
.Estou usando como:
fonte
grep -v '[a-z]'
significa "excluir qualquer linha que contenha um caractere no intervalo dea
atéz
", mas você implementou ogrep '[^a-z]'
que significa "incluir qualquer linha que contenha um caractere que não esteja no intervalo dea
atéz
". Se uma linha tiverabc123
, sua consulta a imprimirá erroneamente porque1
atende a esse critério.grep -v '[a-z]'
não imprimirá esta linha porquea
satisfaz os critérios negados.