regulares paquete online lista expresiones ejemplos python regex backreference

paquete - Subdivisión de expresiones regulares de Python: referencia inversa separada del dígito



lista de expresiones regulares python (2)

En un patrón de reemplazo de expresiones regulares, una referencia inversa se parece a /1 . Si desea incluir un dígito después de esa referencia inversa, esto fallará porque se considera que el dígito es parte del número de referencia inversa:

# replace all twin digits by zeroes, but retain white space in between re.sub(r"/d(/s*)/d", r"0/10", "0 1") >>> sre_constants.error: invalid group reference

El patrón de sustitución r"0/1 0" funcionaría bien, pero en el ejemplo que falla, la referencia /1 se interpreta como /10 .

¿Cómo se puede separar el dígito ''0'' de la referencia /1 que lo precede?


En lugar de usar una referencia inversa con un número de secuencia ( /1 ), puede usar grupos con nombre y el problema se resuelve:

# replace all twin digits by zeroes, but retain whitespace in between re.sub(r"/d(?P<whitespace>/s*)/d", r"0/g<whitespace>0", "0 1") >>> ''0 0''

Resulta que este truco se describe de hecho en la documentación de re.sub .