Guía para Principiantes sobre Expresiones Regulares

¿Alguna vez has intentado encontrar un patrón recurrente en un texto? Puede que hayas utilizado algo como la función de búsqueda en tu navegador o procesador de textos, pero cuando necesitas encontrar algo más complejo, puede ser como buscar una aguja en un pajar.
Afortunadamente, hay una forma de identificar patrones precisos en el texto hasta el nivel de carácter. Se llama expresiones regulares (RegEx), y te permite convertirte en un maestro de la búsqueda en texto.
También lee: Cómo Utilizar Expresiones Regulares para Mejorar la Productividad en tus Tareas Diarias
¿Dónde puedo utilizar RegEx?
Aunque Unix y Linux las hicieron populares, las expresiones regulares están disponibles en una variedad de paquetes, incluyendo Microsoft Word.

Las expresiones regulares se utilizan más notablemente en varios programas de Linux, incluyendo grep, Awk y Sed.
Por ejemplo, puede que quieras comprobar los dispositivos USB en tu PC. Usando lspci, verás una lista de todos los dispositivos, y tendrás que localizar las entradas USB por tu cuenta. Podrías usar lo siguiente para mostrar solo los dispositivos USB:
lspci|grep"USB"Este es el ejemplo más simple de RegEx en acción. Es la forma más popular de utilizar expresiones regulares en la terminal, pero no la única. Hoy en día puedes encontrar soporte para RegEx en muchos tipos diferentes de software, desde editores de texto hasta administradores de archivos.
Encontrando Patrones
Probablemente has utilizado el carácter *, que actúa como un comodín al seleccionar archivos o carpetas en la terminal. Por ejemplo, para listar todos los archivos JPG en una carpeta, podrías usar:
ls*.jpgEl equivalente en RegEx de lo anterior sería:
ls|grep-E"\.jpg"
Para buscar tanto archivos jpg como png, utiliza:
ls|grep-E"(\.jpg|\.png)"Rangos
Si deseas buscar un rango específico de caracteres en lugar de un patrón, puedes hacerlo definiéndolo entre corchetes. Si, por ejemplo, usas [a-z] como tu patrón, esto coincidiría con cualquier cadena que consista en cualquier letra minúscula del alfabeto.
Como probablemente has adivinado, [A-Z] seleccionaría solo letras mayúsculas. Para elegir cualquier rango de letras, tanto en mayúsculas como en minúsculas, la expresión cambiaría a [a-zA-Z].
Para localizar un número específico de instancias de tu patrón, puedes expresarlo entre llaves. {5} devolvería cinco ocurrencias de tu patrón. También puedes usar rangos de números, así que {5,10} te presentaría de cinco a diez instancias.
MetaCaracteres
En expresiones regulares, también puedes buscar partes de una cadena con dos caracteres llamados metacaracteres. Son similares a las coincidencias comodín que podrías haber utilizado en la shell.
El principal es el punto simple, que representa cualquier otro carácter único. Si usas el patrón c.ll, coincidiría con “cell” pero también con “cull” y “call”.
Al introducir un asterisco después de un punto, puedes usarlo para coincidir con un número infinito de caracteres. Por ejemplo, .*board coincidirá con “keyboard” y “skateboard,” incluso si “key” y “skate” tienen un número diferente de letras.
Escape
Puede que hayas notado que en nuestro ejemplo, donde seleccionamos diferentes tipos de archivos de imagen, usamos barras invertidas antes del punto (“.jpg”). Así es como escapas caracteres especiales en RegEx.
Si no las utilizáramos, nuestro patrón no coincidiría solo con las extensiones de los archivos, cadenas como “.jpg” y “.png,” sino que también coincidiría con “ajpg” y “opng.” Recuerda, . es un comodín que coincide con cualquier carácter.
Anclas y Límites
Las anclas y los límites te permiten definir con más precisión lo que estás buscando.
Para encontrar solo la palabra individual “computadora,” sin ningún otro carácter adjunto antes o después, debes definir el patrón como \.
También puedes buscar específicamente patrones que aparezcan al principio o al final de la línea. Esto se logra con los caracteres ^ y $ respectivamente.
Así que, si quisieras encontrar solo las entradas donde la palabra “computadora” apareciera al principio de una línea, tu patrón se vería así: ^computadora. Para lo contrario, cuando está al final de la línea, el patrón cambiaría a computadora$.
Esas son las reglas simples de RegEx, que también puedes mezclar para encontrar exactamente los patrones que estás buscando. Puedes buscar rangos de caracteres al principio de una línea o palabras alternadas al final, fechas específicas, o un rango de años, utilizando una sola cadena de texto.
No olvides consultar nuestra hoja de trucos de Expresiones Regulares para dominar las expresiones regulares.