python - ejemplos - re search
¿Por qué no re.groups() me dará algo para mi único grupo de concordancia correcta? (4)
Cuando ejecuto este código:
print re.search(r''1'', ''1'').groups()
Obtengo un resultado de ()
. Sin embargo, .group(0)
me da la coincidencia.
¿No deberían los groups()
darme algo que contenga el partido?
Actualización: gracias por las respuestas. Entonces, ¿eso significa que si hago re.search()
sin subgrupos, tengo que usar groups(0)
para obtener una coincidencia?
A mi leal saber y entender, .groups()
devuelve una tupla de grupos recordados . Es decir, esos grupos en la expresión regular que están encerrados entre paréntesis. Entonces, si escribieras:
print re.search(r''(1)'', ''1'').groups()
obtendrías
(''1'',)
como tu respuesta. En general, .groups()
devolverá una tupla de todos los grupos de objetos en la expresión regular que están encerrados entre paréntesis.
La razón de esto es que no tiene grupos de captura (ya que no usa ()
en el patrón). http://docs.python.org/library/re.html#re.MatchObject.groups
Y el group(0)
devuelve el resultado de búsqueda completo (incluso si no tiene ningún grupo de captura): http://docs.python.org/library/re.html#re.MatchObject.group
No tiene grupos en su expresión regular, por lo tanto, obtiene una lista vacía ( ()
) como resultado.
Tratar
re.search(r''(1)'', ''1'').groups()
Con los corchetes que está creando un grupo de captura, el resultado que coincide con esta parte del patrón, se almacena en un grupo.
Entonces obtienes
(''1'',)
como resultado.
grupos está vacío ya que no tiene ningún grupo de captura - http://docs.python.org/library/re.html#re.MatchObject.groups . group (0) siempre devolverá el texto completo que se emparejó independientemente de si se capturó en un grupo o no
Editado