J'ai 3 cordes
a ="keep the your pass ABCDEFG other text"
b ="your pass: TESTVALUE other text"
c ="no pass required other text"
Je veux obtenir des valeurs en capital après le passage, comme ceci
re.match(r'.*\spass:?\s([a-zA-Z]+).*',a,re.I).group(1)
re.match(r'.*\spass:?\s([a-zA-Z]+).*',b,re.I).group(1)
Mais je veux exclure "pas de passe", c'est-à-dire que je ne veux pas faire correspondre à la chaîne c, comment faire?
Solution: Merci eyquem et ovgolovin
Je prendrai la suggestion d'eyquem de re.search ('no \ s + pass | pass:? \ S + ([A-Z] +)')
3 réponses
import re
for x in ("keep the your pass ABCDEFG other text",
"your pass: TESTVALUE other text",
"no pass required other text"):
print re.search('no\s+pass|pass:?\s+([A-Z]+)',x).group(1)
A-Z]+)'
Résultat
ABCDEFG
TESTVALUE
None
Ce n'est pas OK d'utiliser match
ici . Il est préférable d'utiliser search
pour de tels cas.
re.search(r'(?<!no\s)pass:?\s+([A-Z]+)',a).group(1)
Il serait préférable de l'écrire de cette façon:
re.search(r'(?<!no\s*)pass:?\s+([A-Z]+)',a).group(1)
, mais malheureusement, la version actuelle du moteur regex ne prend pas en charge les lookbehinds infinis.
Une solution serait de filtrer tout ce qui ne contient pas de «passe», puis de rechercher passe. Faire deux étapes peut sembler un peu lourd, mais vous éviterez de nombreux problèmes en procédant de cette façon. Vous essayez de résoudre deux problèmes en même temps (et apparemment vous avez du mal à le faire) alors séparez simplement les deux problèmes.
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.