He tenido la necesidad de usar expresiones regulares solo unas pocas veces en el trabajo que he hecho. Sin embargo, en esas pocas ocasiones descubrí una forma de expresión muy poderosa que me permitiría hacer algunas cosas extremadamente útiles.Compilador de expresiones regulares
El problema es que el lenguaje utilizado para las expresiones regulares es incorrecto - punto.
Es un error desde un punto de vista psicológico: el uso de símbolos desencarnados proporciona una referencia útil solo para aquellos con memoria eidética. Si bien las reglas sintácticas están claramente establecidas, según mi experiencia y lo que he aprendido de otros, desarrollar una expresión regular que funcione con éxito puede resultar una tarea difícil en todas las situaciones excepto en las más triviales. Esto es comprensible ya que es un análogo simbólico para la teoría de conjuntos, lo cual es algo bastante complicado.
Una de las cosas que puede resultar difícil es disolver la expresión en la que está trabajando en sus partes discretas. Debido a la naturaleza del lenguaje, es posible leer una expresión regular de múltiples maneras si no comprende su objetivo principal, por lo que es complicado interpretar las expresiones regulares de otras personas. En el estudio del lenguaje natural, creo que esto se llama pragmática.
La pregunta que me gustaría hacer es: ¿existe algo así como un compilador de expresiones regulares? ¿O se puede incluso construir?
Podría ser posible considerar las expresiones regulares, desde un punto de vista metafórico, como lenguaje ensamblador: existen algunas similitudes. ¿Se podría diseñar un compilador que pudiera convertir un lenguaje más natural, un lenguaje superior, en expresiones regulares? Luego, en mi código, podría definir mis expresiones regulares utilizando el lenguaje de nivel superior en un archivo de encabezado y hacer referencia a ellos cuando sea necesario utilizando una referencia simbólica. Yo y otros podríamos referirnos desde mi código al archivo de encabezado y apreciar más fácilmente lo que estoy tratando de lograr con mis expresiones regulares.
Sé que se puede hacer desde un punto de vista lógico; de lo contrario, las computadoras no serían posibles, pero si ha leído hasta aquí, ¿consideraría invertir el tiempo en realizarlo?
Encuentro expresiones regulares bastante fáciles de leer. –
Creo que la ambigüedad de un lenguaje natural podría aumentar las complicaciones en lugar de aliviarlas. Regex parece desalentador desde el principio, especialmente cosas como el retroceso y los operadores no codiciosos. Sin embargo, después de haber vuelto a aprender regex recientemente, me parece una noche de intenso estudio para obtener la mayor parte de ella. Sin embargo, estoy seguro de que alguien con más experiencia podría fácilmente regex me. Como todo lo que vale la pena saber, se reduce a la práctica y la persistencia. –
La respuesta de Andrea Ambu es de gran ayuda para cualquiera que tenga problemas con la expresión regular. Es lo que quise decir, pero realmente esperaba que pudiera haber una biblioteca de macros o similar para varios lenguajes de programación que pudieran definir la búsqueda textual con una sintaxis combinatoria, etc. Las personas tienen diferentes modelos mentales, y algunos programadores, yo mismo incluido, es virtualmente imposible trabajar con expresiones regulares, aunque hay terceros disponibles a un bajo costo para escribirlos. Si trabaja regularmente, es más fácil, pero cuando es solo un proyecto ocasional, es difícil. –