Estoy leyendo un libro y proporcionan un ejemplo de cómo hacer coincidir una cadena determinada con expresiones regulares. Aquí es su ejemplo:Estándar Regex vs python regex discrepancia
b*(abb*)*(a|∊) - Strings of a's and b's with no consecutive a's.
Ahora he intentado convertirlo a Python, así:
>> p = re.compile(r'b*(abb*)*(a|)') # OR
>> p = re.compile(r'b*(abb*)*(a|\b)')
# BUT it still doesn't work
>>> p.match('aa')
<_sre.SRE_Match object at 0x7fd9ad028c68>
Mi pregunta es doble:
- ¿Cuál es el equivalente de épsilon en python para hacer que el ejemplo anterior funcione?
- ¿Puede alguien explicarme por qué la forma teórica o estándar de hacer expresiones regulares no funciona en Python? ¿Podría tener algo que ver con el emparejamiento más largo versus el más corto?
Aclaración: Para la gente preguntando qué expresiones regulares estándar es - es el estándar formal de la teoría del lenguaje: http://en.wikipedia.org/wiki/Regular_expression#Formal_language_theory
El comentario del ejemplo está mal ... la expresión regular no sólo cadenas de los partidos A y B sin una de consecutivos. Reemplazaría bb * con b + btw. –
¿Cuál es el comportamiento esperado del épsilon en este contexto? Nunca había visto eso antes y he estado programando durante 12 años ... – jathanism
Regex "estándar"? ¿Quién definió el estándar? ANSI? ¿YO ASI? IEEE? ¿DIOS MIO? –