¿Hay alguna manera de recuperar un patrón dentro de una expresión regular en Python? p.ej.:
StrA = '\ ta - b'
Y me gustaría recuperar 'a' y 'b' en diferentes variables
2 respuestas
Parece que estás hablando de guardar / capturar grupos:
>>> import re
>>> pattern = r"\t(\w+) -- (\w+)"
>>> s = ' test1 -- test2'
>>> a, b = re.search(pattern, s).groups()
>>> a
'test1'
>>> b
'test2'
No puede recuperar un patrón , puede hacer coincidir o recuperar un captura de contenido del grupo que coincida con su patrón.
Siguiendo tu ejemplo:
\ta -- b
Si desea recuperar el contenido, puede usar grupos de captura usando paréntesis como:
\t(a) -- (b)
La explicación de expresiones regulares para esto es:
\t '\t' (tab)
( group and capture to \1:
a 'a'
) end of \1
-- ' -- '
( group and capture to \2:
b 'b'
) end of \2
Entonces podrá obtener el contenido del grupo accediendo a través de su índice como \1
(o $1
) y el grupo \2
(o $2
). Pero vas a tomar el contenido coincidente, no el patrón en sí.
Entonces, si tienes:
\t(\w) -- (\d)
Tomaría contenido que coincida con ese patrón:
\t '\t' (tab)
( group and capture to \1:
\w word characters (a-z, A-Z, 0-9, _)
) end of \1
-- ' -- '
( group and capture to \2:
\d digits (0-9)
) end of \2
Pero no puede recuperar \w
o \d
en sí mismo.
Si quieres obtener los patrones para esto:
\t\w -- \d
Debería dividir la cadena anterior por --
y obtendría cadenas ::
"\t\w "
" \d"
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.