Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/11/2009, 08:00
Jhandariel
 
Fecha de Ingreso: junio-2009
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Expresiones regulares, duda

Hola amantes de la programación.

Verán, resulta que me interesa analizar un string entrante para que me reconozca palabras reservadas de un lenguaje y me las cambie de color. Me gustaría, por ejemplo, que me resaltase el texto while.

Así, por ejemplo:

Código:
while (true)
Debería producir:

Código:
while (true)
Para ello, podría ser tan simple como utiliar una expresión regular de la forma "while", buscar una coincidencia y aplicarle color. Sin embargo, ello produce que cosas como:

Código:
whileeee (true)
Se coloren de la siguiente forma:

Código:
whileeee (true)
Whileee no es una palabra reservada y por tanto no debería colorearse. Se me ocurre por tanto ponerle un delimitador, de manera que la expresión sea 'while acabado en cualquier cosa que no sea una letra', de tal forma escribiriamos la expresión como "while[^a-z]". Sin embargo, ello produce cosas como:

Código:
whilee while[ (true)
Se coloren de la siguiente forma:

Código:
whilee while[ (true)
Es decir, me vuelve a seleccionar una palabra que no es reservada.

¿Se os ocurre como podría hacerlo?

Muchísimas gracias de antemano.