Hay un par de opciones en Python para hacer coincidir una entrada completa con una expresión regular.
Python 2
En Python 2.x, puede utilizar
re.match(r'\d+$') # re.match anchors the match at the start of the string, so $ is what remains to add
o - para evitar el juego antes de la final en la cadena de \n
:
re.match(r'\d+\Z') # \Z will only match at the very end of the string
o igual arriba con el método re.search
que requiere el uso de ^
/\A
ancla de inicio de cadena ya que no ancla el matc h en el comienzo de la cadena:
re.search(r'^\d+$')
re.search(r'\A\d+\Z')
Tenga en cuenta que \A
es un ancla inicio cadena inequívoca, su comportamiento no puede ser redefinido con cualquier modificador (re.M
/re.MULTILINE
sólo puede redefinir el comportamiento ^
y $
).
Python 3
Todos los casos descritos en la sección Python 2 y un método más útil, re.fullmatch
(también presente en el PyPi regex
module):
Si todo el cadena coincide con la expresión regular patrón, devuelva un objeto de coincidencia correspondiente. Devuelve None
si la cadena no coincide con el patrón; tenga en cuenta que esto es diferente de una coincidencia de longitud cero.
Así que, después de compilar la expresión regular, sólo tiene que utilizar el método apropiado:
_rex = re.compile("\d+")
if _rex.fullmatch(s):
doStuff()
+1. Evita las expresiones regulares si puedes. –
'\ d + $' debería ser suficiente con la coincidencia – Medorator
'$' no funciona en el caso de una nueva línea final. Ver 're.match (r '^ \ d + $', '4 \ n')' por ejemplo. – Antimony