sub online example python regex regex-group

online - Python Regex reemplaza instantáneamente a los grupos



re.search python (2)

¿Hay alguna manera de reemplazar directamente todos los grupos usando la sintaxis de expresiones regulares?

La forma normal:

re.match(r"(?:aaa)(_bbb)", string1).group(1)

Pero quiero lograr algo como esto:

re.match(r"(/d.*?)/s(/d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)")

Quiero construir la nueva cadena instantáneamente a partir de los grupos que Regex acaba de capturar.


Echa un vistazo a re.sub :

result = re.sub(r"(/d.*?)/s(/d.*?)", r"/1 /2", string1)

Esta es la función de sustitución de expresiones regulares de Python (reemplazar). La cadena de reemplazo se puede rellenar con las llamadas referencias inversas (barra diagonal inversa, número de grupo) que se reemplazan con lo que coincidió con los grupos. Los grupos se cuentan de la misma manera que con la función de group(...) , es decir, comenzando desde 1 , de izquierda a derecha, abriendo paréntesis.


La respuesta aceptada es perfecta. Yo agregaría que la referencia de grupo probablemente se logre mejor usando la sintaxis

r"/g<1> /g<2>"

para la cadena de respuesta. De esta manera, evita las ambiguas ambigüedades de la sintaxis en los reemplazos en los que un grupo puede ir seguido de un dígito. Nuevamente, todo esto está presente en el documento, nada nuevo, solo a veces difícil de detectar a primera vista.