[ Foro de Python ]
Hola a todos, soy muy novato en esto de la programacion y estoy comenzando con Python, aclaro que mis conocimientos son casi nulos con respecto a este lenguaje, he estado mirando algunas cosas por internet debido a una operacion matematica que tengo que hacer sobre una expresion regular, las expresiones son las siguientes, solo son un ejemplo:
Si yo tengo la siguiente expresion 1*(1+0)* la pregunta es la siguiente: Como puedo hacer yo para que cuando se ejecute el algoritmo por medio de la consola, se lea toda la expresion entera sin tener que recurrir a tener que poner una por una.
Mirandolo de una manera mas simple si el usuario me digita esto 1+0 me gustaria que esa expresion sea una misma variable y que el algoritmo pueda detectarme ese 1 y ese 0 por aparte estando en una misma variable.
Aclaro que ese + no me va a dar igual a 1 por que no estamos hablando de una operacion matematica normal, estoy hablando de expresiones regulares, el proceso como tal que tengo que hacer son sus derivadas que ya las tengo muy claras, pero mi algoritmo quedaria mejor, si de alguna manera se pudiera leer toda la expresion completa.
Espero me hallan entendido y espero haberme explicado bien.
PD: Consulte con un amigo que tiene buenos conocimiento en este lenguaje y me hablo algo acerca de los analizadores lexicos o sintacticos pero me gustaria saber si hay alguna manera de realizar eso que dije anteriormente de una manera mas sencilla sin tener que recurrir a ellos.
Saludos y gracias por leer.
En general, analizar una expresión no es trivial. Si es una expresión matemática, efectivamente, debes hacer un analizador, que típicamente va a tratar de expresarla como un árbol, porque hay distintos nodos con distintas prioridades (por ejemplo, una multiplicación se deberá hacer antes que una suma).
Una expresión regular sencilla, según lo que quieras hacer con ella, se puede automatizar en algunos casos de forma (algo) más sencilla, pero si es una expresión regular que se aplica a una expresión matemática, estamos complicando aún más el caso anterior...
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)