J'aime grep -v
. Je l'utilise tout le temps. Mais je fais aussi du traitement de texte en python, et il me manque une chose cruciale.
Habituellement, j'utilise grep -v
pour retirer des éléments étrangers du texte.
Par exemple,
$ grep -v '[a-z]'
# (I manually review this output to confirm that I don't want those lines)
$ grep '[a-z]' > linesiwanted
Mais comment puis-je faire correspondre le complément d'une expression régulière en Python? Par exemple, le complément de \w
?
text-processing
grep
regular-expression
python
ixtmixilix
la source
la source
Réponses:
Une expression régulière en Python, les méthodes
search
oumatch
, renvoie unMatch
objet ouNone
. Pour l'grep -v
équivalent, vous pouvez utiliser:Ou plus précisément:
la source
Il s'avère que vous pouvez simplement utiliser [^ az] pour signifier
grep -v [a-z]
.Je l'utilise comme:
la source
grep -v '[a-z]'
signifie "exclure toute ligne contenant un caractère dans la plage dea
àz
" mais vous avez implémentégrep '[^a-z]'
ce qui signifie "inclure toute ligne contenant un caractère ne se trouvant pas dans la plage dea
àz
". Si une ligne contient,abc123
votre requête l'imprimera par erreur car elle1
répond à ces critères.grep -v '[a-z]'
n'imprimera pas cette ligne cara
répond aux critères négatifs.