Learning Machine #13 - Expresiones regulares.

Hola de nuevo a todos, el día de hoy veremos un poco acerca de las expresiones regulares. Imagina que haces alguna clase de programa que sirve de "GUI" para ffmpeg, haces una interfaz bonita y haces los controles para funciones que suenan genial... pero nunca implementaste.


Hace algunos años publiqué un programa llamado VEncoder 2, que en su tiempo funcionó, pero poco despues se volvio obsoleto debido a que ffmpeg sufrió cambios y por lo tanto VEncoder paso a ser obsoleto.

Para solucionar eso, decidí que ya era hora de empezar a actualizarlo y tratar de hacerlo a "prueba de tiempo", pero lo haré poco a poco.

Una de las funciones que estaban planeadas desde el inicio, era la de poder escribir a mano algunos parámetros adicionales o simplemente sobre-escribir los pararmetros y sus valores. Para poder realizar ese trabajo, debemos de encontrar una forma de encontrar exactamente cada valor, es decir si queremos cambiar la resolución, debemos de encontrar la forma de saber si ya hay o no este parámetro. En c# hay varias formas de lograrlo, pero creo que la mas adecuada es mediante el uso de expresiones regulares.

Expresiones regulares

Antes que nada, veamos que son las expresiones regulares.

En cómputo teórico y teoría de lenguajes formales una expresión regular, también conocida como regex,​ es una secuencia de caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones. Por ejemplo, el grupo formado por las cadenas Handel, Händel y Haendel se describe con el patrón "H(a|ä|ae)ndel". La mayoría de las formalizaciones proporcionan los siguientes constructores: una expresión regular es una forma de representar los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres del alfabeto sobre el cual se define el lenguaje. Wikipedia/expresionRegular.
 Entonces para definir un patrón, disponemos de las siguientes:

  • Clases de caracteres
    • . - Cualquier carácter (menos el de nueva linea).
    • \w\d\s - palabra, dígito, espacio en blanco.
    • \W\D\S - NO palabra, NO dígito, No espacio en blanco.
    • [abc] - cualquier letra dentro del corchete.
    • [^abc] - Ninguna de las letras dentro del corchete.
    • [a-g] - carácter entre "a" y "g".
  • Anclas
    • ^abc$ - inicio/ fin de la palabra.
    • \b\B - final/NO final.
  • Agrupación.
    • (abc) - Agrupación.
    • \1 - referencia hacia atrás.
    • (?:abc) omitir grupo.
    • (?=abc) busqueda hacia adelante.
    • (?!abc) busqueda haci atras.
  • Alternación
    • a*a+a? - 0 o mas, 1 o mas, 0 o 1.
    • a{5}a{2,} - Exactamente 5,2 o mas.
    • a{1,3} - entre uno y tres.
    • a+?a{2,}? - Buscar el menor posible.
    • ab|cd - busca ab o cd.
Y bien, por ahora es todo, en el siguiente post veremos cómo hacer uso de las expresiones regulares en C# y ademas implementaremos la función que describi al inicio.

Los leo luego.

No hay comentarios.