Il existe plusieurs options en Python pour faire correspondre une entrée entière avec une regex.
Python 2
En Python 2.x, vous pouvez utiliser
re.match(r'\d+$') # re.match anchors the match at the start of the string, so $ is what remains to add
ou - pour éviter la mise en correspondance avant \n
finale dans la chaîne:
re.match(r'\d+\Z') # \Z will only match at the very end of the string
Ou le même que ci-dessus avec re.search
méthode nécessitant l'utilisation de ^
/\A
ancre de début de chaîne car elle n'ancre pas le matc h au début de la chaîne:
re.search(r'^\d+$')
re.search(r'\A\d+\Z')
Notez que \A
est un point d'ancrage de début de chaîne sans ambiguïté, son comportement ne peut être redéfinie avec des modificateurs (re.M
/re.MULTILINE
ne peut redéfinir le comportement ^
et $
).
Python 3
Tous les cas décrits dans la section Python 2 et une autre méthode utile, re.fullmatch
(également présent dans le PyPi regex
module):
Si toute la chaîne correspond à l'expression régulière modèle, retourne un objet correspondant. Renvoie None
si la chaîne ne correspond pas au modèle; Notez que cela est différent d'une correspondance de longueur nulle.
Ainsi, après vous compilez le regex, il suffit d'utiliser la méthode appropriée:
_rex = re.compile("\d+")
if _rex.fullmatch(s):
doStuff()
+1. Évitez les expressions rationnelles si vous le pouvez. –
'\ d + $' devrait être suffisant avec la correspondance – Medorator
'$' ne fonctionne pas dans le cas d'une nouvelle ligne de fin. Voir 're.match (r '^ \ d + $', '4 \ n')' par exemple. – Antimony