Reemplace todas las ocurrencias que coincidan con expresiones regulares

Tengo una expresión regular que busca una cadena que contiene '.00.' o '.11.' como sigue:

 .*\.(00|11)\..* 

Lo que me gustaría hacer es reemplazar todas las apariciones que coincidan con el patrón con 'X00X' o 'X11X' . Por ejemplo, la cadena '.00..0..11.' resultaría en 'X00X.0.X11X' .

Estaba buscando en el método re.sub de Python y no estoy seguro de cómo hacerlo de manera efectiva. El objeto coincidente devuelto solo coincide en la primera aparición y, por lo tanto, no funciona bien. ¿Algún consejo? ¿Debería usar una cadena de reemplazo para esta tarea? Gracias.

re.sub() (docs para Python 2 y Python 3 ) reemplaza todas las coincidencias que encuentra, pero su uso de .* puede haber hecho que la expresión regular coincida demasiado (incluso otras apariciones de .00. etc.). Simplemente haz:

 In [2]: re.sub(r"\.(00|11)\.", r"X\1X", ".00..0..11.") Out[2]: 'X00X.0.X11X' 

Tenga en cuenta que los patrones no pueden superponerse:

 In [3]: re.sub(r"\.(00|11)\.", r"X\1X", ".00.11.") Out[3]: 'X00X11.' 

Puedes probar esto también

 data = "otherway-of-try-b-pool" data_after_regex = re.sub(r'(-[az]-pool)', "", data) out: otherway-of-try (above regEx removed '-b-pool' part)