X
X
X
X

Redactar secuencias de caracteres con Regex o expresiones regulares

Página principalArtículosDesarrollo WebRedactar secuencias de caracteres c...

Las Expresiones Regulares, comúnmente conocidas como Regex o RegExp, son herramientas popularmente empleadas en el mundo de la programación y el procesamiento de texto. Una expresión regular es una secuencia de caracteres que forma un patrón de búsqueda. Estos patrones son utilizados para buscar, extraer o manipular texto según reglas específicas.

¿Que es una expresión regular?

Las regex (en inglés, regular expressions) son las unidades de descripción de los lenguajes regulares, que se incluyen en los denominados lenguajes formales. Son un instrumento clave de la informática teórica, la cual, entre otras cosas, establece las bases para el desarrollo y la ejecución de programas informáticos, así como para la construcción del compilador necesario para ello. Es por esto que las expresiones regulares, también denominadas regex y basadas en reglas sintácticas claramente definidas, se utilizan principalmente en el ámbito del desarrollo de software.

Para cada regex existe un denominado autómata finito (también conocido como máquina de estado finito) que acepta el lenguaje especificado por la expresión y que, con ayuda de la construcción de Thompson, se desarrolla a partir de una expresión regular. Por otro lado, para cada autómata finito también hay una expresión regular que describe el lenguaje aceptado por el autómata. Este puede generarse bien con el algoritmo de Kleene o bien con la eliminación de estados.

Un ejemplo emblemático del uso de expresiones regulares en la tecnología de la información se encuentra en la función de "buscar y reemplazar" de los editores de texto. Esta funcionalidad, implementada por primera vez en la década de 1960 por Ken Thompson (Co-creador de Go), una figura destacada en las ciencias de la computación y uno de los desarrolladores del sistema operativo UNIX, tuvo su inicio en el editor de texto por línea QED y se extendió posteriormente a sus sucesores.

La función de buscar y reemplazar basada en expresiones regulares permite a los usuarios buscar secuencias específicas de caracteres en un texto y, si así lo desean, reemplazarlas por otra secuencia de caracteres. Esto no solo simplifica el proceso de edición y manipulación de texto, sino que también proporciona una herramienta poderosa para realizar cambios masivos y precisos en documentos.

Por ejemplo, supongamos que un usuario necesita corregir consistentemente la ortografía de una palabra mal escrita en todo un documento. Utilizando expresiones regulares, podrían buscar todas las instancias de la palabra mal escrita y reemplazarlas simultáneamente con la ortografía correcta, en lugar de realizar correcciones manualmente una por una.

Este enfoque no solo ahorra tiempo y esfuerzo, sino que también permite realizar tareas complejas de manipulación de texto de manera eficiente y uniforme. La habilidad de Ken Thompson para implementar esta funcionalidad en los primeros editores de texto marcó el inicio de la integración de expresiones regulares en herramientas informáticas fundamentales y ha perdurado como una técnica esencial en el desarrollo y la administración de software hasta el día de hoy.

¿Como funciona una expresión regular?

Una expresión regular puede estar formada, o bien exclusivamente por caracteres normales (como abc), o bien por una combinación de caracteres normales y metacaracteres (como ab*c). Los metacaracteres describen ciertas construcciones o disposiciones de caracteres: por ejemplo, si un carácter debe estar en el inicio de la línea o si un carácter solo debe o puede aparecer exactamente una vez, más veces o menos. Ambos ejemplos de expresiones regulares funcionan, por ejemplo, de la siguiente manera:

abc. El patrón regex sencillo abc requiere una coincidencia exacta. Por tanto, se buscarán cadenas de caracteres que no solo contengan los caracteres “abc”, sino que también aparezcan en ese orden. Una pregunta como “¿Conoces la plaza ABC?” ofrece la coincidencia buscada por esta expresión.

ab*c. Las expresiones regulares con caracteres especiales funcionan de manera diferente, ya que no solo se buscarán coincidencias exactas, si no también escenarios especiales. En este caso, el asterisco hace que la búsqueda se centre en cadenas de caracteres que empiecen por la letra “a” y que terminen por la letra “c” y entremedias cuenten con cualquier número de caracteres “b”. Así se mostrará como coincidencia tanto “abc”, como la cadena de caracteres “abbbbc” y “cbbabbcba”.

¿Cuáles son las reglas sintácticas aplicables a las expresiones regulares?

Las expresiones regulares se pueden emplear en una variedad de lenguajes, como Perl, Python, Ruby, JavaScript, XML o HTML, y sus usos y funciones pueden variar significativamente. Por ejemplo, en JavaScript, los patrones regex se emplean en métodos de cadena como search(), match() o replace(), mientras que en documentos XML, las expresiones regulares se utilizan para restringir elementos de contenido. A pesar de estas diferencias en el uso, en términos de sintaxis, hay una notable uniformidad entre los diversos lenguajes de programación y lenguajes de marcado en lo que respecta a las expresiones regulares.

Así, una expresión regular puede estar formada por hasta tres partes, independientemente del lenguaje en el que se va a utilizar:

Pattern (patrón de búsqueda) El elemento central es el patrón, esto es, el patrón de búsqueda general. Tal y como hemos explicado antes, se puede formar a partir de caracteres simples o a partir de una combinación de caracteres simples y especiales.
Delimiter (delimitador) El inicio y el final del patrón se identifican con delimitadores. Los delimitadores son, básicamente, todos los caracteres no alfanuméricos (excepto la barra diagonal inversa). Por ejemplo, para PHP las almohadillas (#pattern#), los signos de porcentaje (%pattern%), el signo más (+pattern+) o las tildes (~pattern~) son delimitadores. La mayoría de lenguajes ya usan las comillas (“pattern”) o las barras diagonales (/pattern/).
Modifier (modificador) Los modificadores pueden añadirse a un patrón de búsqueda para modificar la expresión regular. Un ejemplo es el modificador i, el cual anula la distinción entre mayúsculas y minúsculas. Garantiza que las mayúsculas y las minúsculas se tienen en consideración y que valen por defecto para todas las expresiones regulares.

A continuación, listamos algunos de los caracteres especiales de sintaxis que pueden ampliar los patrones con opciones específicas:

Caracteres especiales regex de sintaxis Función
[] Los corchetes identifican a una clase de caracteres que siempre representa a un único carácter en un patrón de búsqueda.
() Los paréntesis identifican un grupo de caracteres formado por uno o varios caracteres y que pueden operarse unos dentro de los otros.
- Funciona a modo de especificación del área (de […] hasta […]) cuando se sitúa entre dos caracteres normales.
^ Limita la búsqueda al inicio de una línea (otra función: elemento de negación en clases de caracteres).
$ Limita la búsqueda al final de una línea.
. Equivale a cualquier carácter.
* El número del carácter, de la clase o del grupo situado antes del asterisco puede ser aleatorio (cero incluido).
+ El carácter, la clase o el grupo antes de un signo más debe aparecer como mínimo una vez.
? El carácter, la clase o el grupo antes del signo de interrogación es opcional y puede aparecer como máximo una vez.
{n} El carácter, la clase o el grupo anteriores aparecen exactamente n veces.
{n,m} El carácter, la clase o el grupo anteriores aparecen como mínimo n veces y como máximo m veces.
{n,} El carácter, la clase o el grupo anteriores aparecen como mínimo n veces o con frecuencia.
\b Tiene en cuenta el límite de palabra durante la búsqueda.
\B Ignora el límite de palabra durante la búsqueda.
\d Cualquier dígito; abreviatura para la clase de caracteres [0-9].
\D Cualquier no dígito; abreviatura para la clase de caracteres [^0-9].
\w Cualquier carácter alfanumérico; abreviatura para la clase de caracteres [a-zA-Z_0-9].
\W Cualquier carácter no alfanumérico; abreviatura para la clase de caracteres [^\w].

 

Ejemplos de Uso:

  1. Validación de Formato de Correo Electrónico:

    Ejemplo regex:
    ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

    Esta expresión regular valida un formato de dirección de correo electrónico.

  2. Búsqueda de Números de Teléfono:

    Ejemplo regex:
    \d{3}-\d{3}-\d{4}

    Encuentra números de teléfono en el formato xxx-xxx-xxxx.

  3. Extracción de Etiquetas HTML:

    Ejemplo regex:
    <\s*([a-zA-Z]+)([^>]*)>

    Extrae etiquetas HTML y sus atributos de una cadena de texto.

Ámbitos de Uso:

  1. Validación de Datos: Las expresiones regulares son esenciales para validar formatos específicos, como direcciones de correo electrónico, números de teléfono o códigos postales.

  2. Búsqueda y Extracción de Datos: Son ampliamente utilizadas para buscar y extraer información específica de conjuntos de datos o documentos.

  3. Manipulación de Texto: Facilitan la manipulación de texto al realizar reemplazos, eliminaciones o transformaciones basadas en patrones definidos.

  4. Análisis de Log y Archivos de Texto: En entornos de desarrollo y administración de sistemas, se utilizan para analizar registros y archivos de texto en busca de patrones específicos.

  5. Desarrollo de Software: Las expresiones regulares son herramientas valiosas en el desarrollo de software para realizar búsquedas y manipulación eficientes de cadenas de texto.

En conclusión, las expresiones regulares son una herramienta versátil y poderosa en el campo de la programación y el procesamiento de texto. Al entender y dominar su sintaxis, los desarrolladores pueden realizar tareas complejas de búsqueda, validación y manipulación de datos de manera eficiente y precisa.


Top