Me interesa cómo se puede implementar la coincidencia recíproca de expresiones regulares en Python (no he encontrado ningún ejemplo :(). Por ejemplo, ¿cómo se escribiría una expresión que coincida con "corchete equilibrado" como "foo (bar (bar (foo)))) (foo1) Bar1"¿Cómo se puede implementar una expresión regular recursiva en python?
Respuesta
Por desgracia no creo que las expresiones regulares de Python admiten los patrones recursivos
probablemente se puede analizar con algo como pyparsing:. http://pyparsing.wikispaces.com/
Hubiera dicho, afortunadamente ... – pillmuncher
no puede hacerlo con una expresión regular. Python no es compatible con expresiones regulares recursivas
Usted podría utilizar pyparsing
#!/usr/bin/env python
from pyparsing import nestedExpr
import sys
astring=sys.argv[1]
if not astring.startswith('('):
astring='('+astring+')'
expr = nestedExpr('(', ')')
result=expr.parseString(astring).asList()[0]
print(result)
Correr cede:
% test.py "foo(bar(bar(foo)))(foo1)bar1"
['foo', ['bar', ['bar', ['foo']]], ['foo1'], 'bar1']
Esta es una vieja pregunta, pero para las personas que vienen aquí a través de búsquedas:
Hay un módulo de expresiones regulares alternativa para Python que hace patrones recursivos de soporte: https://pypi.python.org/pypi/regex
Y tiene muchas más mejoras en re
.
Awesome new engine! Recursión decente por fin :) Gracias. –
¿Este motor se fusionará con el stdlib de python en algún momento? Parece que no puedo encontrar ninguna conversación reciente sobre esto. –
¡Esta respuesta realmente se beneficiaría de un ejemplo! :) –
- 1. ¿Expresión regular para encontrar una expresión regular?
- 2. Expresión regular de Python
- 3. Python lambda con expresión regular
- 4. ¿Cómo validar una expresión regular?
- 5. ¿Cómo puedo depurar una expresión regular en python?
- 6. Particionar una cadena en Python por una expresión regular
- 7. Comprueba si una expresión regular cubre otra expresión regular
- 8. Python: encontrar expresión regular en un archivo
- 9. expresión regular "contiene" otra expresión regular
- 10. ¿Cómo descompilar una expresión regular?
- 11. Expresión regular URL de Gruber en Python
- 12. ¿Qué significa "?:" En una expresión regular de Python?
- 13. ¿Hay una expresión regular para detectar una expresión regular válida?
- 14. utilizar Python expresión regular en Django
- 15. expresión regular python para dividir párrafos
- 16. Caso insensible expresión regular Python sin re.compile
- 17. ¿Se puede mejorar este código de expresión regular C#?
- 18. Cómo reemplazar por expresión regular a minúsculas en python
- 19. ¿Puede Java String.indexOf() manejar una expresión regular como parámetro?
- 20. sed: no se puede resolver esta expresión regular
- 21. expresión regular de Python con los codones
- 22. ¿Qué expresión regular puede eliminar elementos duplicados de una cadena?
- 23. Cómo implementar la inserción recursiva en sftp
- 24. ¿Cómo usar la expresión regular con caracteres opcionales en python?
- 25. expresión regular en iOS
- 26. Coincidencia de un + en una expresión regular
- 27. ¿Cómo se "depura" una expresión regular con sed?
- 28. ¿Cómo se repite el texto con una expresión regular?
- 29. ¿Cómo se comenta una expresión regular de Perl?
- 30. Una expresión regular rápida necesaria
Escribiría un analizador para esto. – Geo
@Tempus, de hecho, o Tony vendrá. http://stackoverflow.com/a/1732454/193892 –
@AmigableClarkKant está bien, lo sé Tony. Él es un amigo. – Geo