Me gusta grep -v
. Lo uso todo el tiempo. Pero también estoy procesando texto en Python, y hay una cosa crucial que me falta.
Por lo general, grep -v
suelo sacar cosas extrañas del texto.
Por ejemplo,
$ grep -v '[a-z]'
# (I manually review this output to confirm that I don't want those lines)
$ grep '[a-z]' > linesiwanted
Pero, ¿cómo combino el complemento de una expresión regular en Python? Por ejemplo, el complemento de \w
?
text-processing
grep
regular-expression
python
ixtmixilix
fuente
fuente
Respuestas:
Una expresión regular en Python, ya sea el método
search
omatch
, devuelve unMatch
objeto oNone
. Para elgrep -v
equivalente, puede usar:O más concisamente:
fuente
Resulta que puedes usar [^ az] para significar
grep -v [a-z]
.Lo estoy usando como:
fuente
grep -v '[a-z]'
significa "excluir cualquier línea que contenga un carácter en el rango dea
az
" pero ha implementado logrep '[^a-z]'
que significa "incluir cualquier línea que contenga un carácter que no esté en el rango dea
az
". Si tiene una líneaabc123
, su consulta la imprimirá erróneamente porque1
satisface ese criterio.grep -v '[a-z]'
no imprimirá esta línea porquea
satisface los criterios negados.