Situación:capturar el contenido de una expresión regular y eliminarlos, eficiente
- texto: una cadena
- R: una expresión regular que coincide con parte de la cadena. Esto puede ser costoso de calcular.
Quiero eliminar las coincidencias R del texto y ver qué contienen realmente. Actualmente, hago esto como:
import re
ab_re = re.compile("[ab]")
text="abcdedfe falijbijie bbbb laifsjelifjl"
ab_re.findall(text)
# ['a', 'b', 'a', 'b', 'b', 'b', 'b', 'b', 'a']
ab_re.sub('',text)
# 'cdedfe flijijie lifsjelifjl'
Esto ejecuta la regex dos veces, cerca como puedo decir. ¿Hay alguna técnica para hacerlo todo al pasar, quizás usando re.split? Parece que con las soluciones basadas en división tendré que hacer la expresión regular al menos dos veces también.
Al menos 3 buenos conjuntos de respuestas. El mío es rápido y simple, usando re.split(). Deestan expone toda la información sobre los partidos utilizando finditer(), y los shows de Jon Cage de que las funciones se pueden usar en re.sub, que es una habilidad inteligente. –