jueves, 11 de junio de 2015

Expresión Regular para números en Notación Científica (1.5e-10)

No cabe duda que las expresiones regulares tienen un potencial de mucho valor a la hora de analizar textos, ya sea para marcado, búsqueda de patrones, o incluso la programación de un compilador, un analizador de frases, de expresiones matemáticas, etc.
 
En esta ocasión he tenido que echar mano de ellas para el análisis de textos matemáticos en los cuales aparecen números en Notación Científica (con exponentes del tipo 1.5E-10). Pues bien, una expresión regular que me está funcionando bastante bien es la siguiente:
 
[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?
 

Esta expresión regular se puede descomponer en los siguientes bloques, para poder interpretarla con mayor facilidad: 
  • El primer bloque [-+]? está indicando que el número podría estar precedido opcionalmente de un signo - o un signo +
  • El segundo bloque [0-9]* indica que podría aparecer un número de 0 o más dígitos del 0 al 9 
  • El tercer bloque indica que también de manera opcional podría aparecer un punto decimal
  • El cuarto bloque sugiere la aparición de un número de 1 o más dígitos del 0 al 9 
  • El quinto bloque es precisamente el que indicaría la parte exponencial del número y podría ser totalmente opcional.
Este último bloque se descompone en los siguiente sub-bloques:
  • Un primer bloque que indica la aparición de la letra 'e' o 'E' de exponente.
  • Un segundo bloque que indica la aparición opcional del signo '-' o el signo '+'
  • Un tercer bloque que indica la aparición de un número de 1 o más dígitos del 0 al 9.

No hay comentarios:

Publicar un comentario