sábado, 5 de septiembre de 2015

Expresiones Regulares I

Aunque no sea exactamente C++, después de tener que pelearme bastante con ellas últimamente, se me ha ocurrido hacer aquí algo básico con ellas.

No quiero asustar a nadie con un ejemplo (a simple vista si no se conocen, son absolutamente abstractas) ni con una tabla de signos igual que las que hay a patadas en internet (sólo hay que poner "expresiones regulares" en google para ver cientos de ejemplos), simplemente voy a empezar contando un poco qué son y para qué sirven.

Las expresiones regulares son, como indica su nombre, expresiones que se utilizan para identificar un patrón de texto, como por ejemplo, si queremos localizar en un texto muy largo los números de teléfono o una dirección de email.

Para probarlas, he decidido utilizar Notepad++ ( https://notepad-plus-plus.org/ ). Es un editor de texto que, entre muchas otras ventajas, permite utilizar expresiones regulares para buscar o reemplazar patrones de texto.

Vamos directamente con los ejemplos prácticos (opción "Buscar" en el Notepad++):

Teléfono básico: XXXXXXXXX (nueve dígitos seguidos tal cual).


Podemos ver cómo a través de la expresión regular ha encontrado el número de teléfono (si fuesen varios los encontraría todos) sin importar el número exacto, sólo con el patrón.
A ver la expresión regular:  [0-9]{0}
[0-9]   Esta expresión indica un dígito entre el 0 y el 9 (ambos inclusive).
{9}     Esta expresión nos dice que la expresión anterior se debe repetir 9 veces.

Teléfono con prefijo separado por espacio: XXX XXXXXX (tres dígitos, un espacio y seis dígitos).


La expresión regular: [0-9]{3}\s[0-9]{6}
Lo nuevo:
\s     Esta expresión nos indica que debe haber un espacio en blanco en esa posición (entre los tres primeros dígitos y los otros seis).

Teléfono con prefijo separado por un guión: XXX-XXXXXX (tres dígitos, un guión y otros seis dígitos).


La expresión regular: [0-9]{3}[-]+[0-9]{6}
Lo nuevo:
[-]+   Ahora la expresión debe buscar un guión y el símbolo "+" indica que debe haber al menos una repetición de esa expresión a la que va ligada.

Teléfono con prefijo separado por paréntesis: (XXX)XXXXXX (paréntesis, tres dígitos, cierra paréntesis y otros seis dígitos).


La expresión regular: \([0-9]{3}\)[0-9]{6}
Lo nuevo:
\(     Abre paréntesis.
\)     Cierra paréntesis.


Para la próxima..... más ejemplos de expresiones regulares.