Estoy tratando de crear una función de Python que pueda tomar una descripción simple en inglés de una expresión regular y devolver la expresión regular a la persona que llama.¿hay necesidad de una forma más declarativa de expresar expresiones regulares? :)
Actualmente estoy pensando en la descripción en formato YAML. Por lo tanto, podemos almacenar la descripción como una variable de cadena sin procesar, que se pasa a esta otra función y la salida de esa función se pasa luego al módulo 're'. Lo que sigue es un ejemplo bastante simple:
# a(b|c)d+e*
re1 = """
- literal: 'a'
- one_of: 'b,c'
- one_or_more_of: 'd'
- zero_or_more_of: 'e'
"""
myre = re.compile(getRegex(re1))
myre.search(...)
etc.
¿Alguien piensa que algo de este tipo sería de uso más amplio? ¿Conoces paquetes existentes que pueden hacerlo? ¿Cuáles son las limitaciones que ve a este enfoque? ¿Alguien piensa que tener la cadena declarativa en el código lo haría más fácil de mantener?
¿JSON o XML quizás? DTD o XSD también pueden describir bien una estructura de datos. – codymanix
Así que, en lugar de una expresión completa compleja que toma una línea completa, ocupará toda una página :) –
Las personas que conocen expresiones regulares se sienten cómodas con ella, pero a todos los demás les parece que el alfabeto se vomitó. Esto podría ser un problema, pero no estoy seguro. Después de todo, puede decir lo mismo de los lenguajes de programación para las personas que programan frente a las personas que no lo hacen. Podría ser bueno hacerlo con objetos y funciones instaladas de cadenas, pero no estoy seguro de cuál sería la mejor manera de implementarlo. +1 a la innovación de todos modos. – psicopoo