regex (expresiones regulares)
100%

Text-Fu Avanzado · Lección 1

regex (expresiones regulares)

Aprende cómo las anclas, los conjuntos de caracteres, la repetición y las variantes de regex controlan la coincidencia de patrones de texto.

Las expresiones regulares, abreviadas con frecuencia como regex, describen patrones de texto. Herramientas como grep, sed y awk usan regex, pero la sintaxis que admiten puede variar, así que identifica siempre la herramienta y la variante de expresiones regulares.

grep de GNU usa expresiones regulares básicas (BRE) de forma predeterminada y expresiones regulares extendidas (ERE) con -E. Esta lección presenta primero elementos compartidos por ambas y después señala incorporaciones habituales de ERE.

Usa esta entrada en los ejemplos:

sally sells seashells
by the seashore

Buscar texto literal

La mayoría de los caracteres normales coinciden consigo mismos. El patrón seashells selecciona una línea que contenga esa secuencia exacta en cualquier posición:

$ grep 'seashells' sample.txt
sally sells seashells

Pon los patrones regex entre comillas para que el shell no los expanda ni divida antes de que los reciba la herramienta de coincidencia. Las regex también difieren de la expansión de rutas del shell: en una regex, * repite el átomo anterior; en un patrón glob del shell, * es por sí mismo un comodín para una secuencia de caracteres de una ruta.

¿Qué hace * en una expresión regular como ab*?

Anclar una coincidencia

Fuera de una expresión entre corchetes, ^ al principio de un patrón ancla la coincidencia al principio de una línea:

^by

El ancla $ coincide con el final de una línea:

seashore$

Combina ambas anclas cuando toda la línea deba ajustarse al patrón:

^by the seashore$

¿Qué patrón coincide únicamente con una línea cuyo texto completo es by the seashore?

Coincidir con un carácter

El punto coincide con un carácter en el modo normal de expresiones regulares orientadas a líneas:

b.

Esto coincide con by, pero también podría coincidir con ba o b7. No coincide con una b aislada porque exige un carácter después. Para buscar un punto literal, escápalo como \. o colócalo en una expresión entre corchetes adecuada.

¿Con qué cadena no coincide el patrón de línea completa ^b.$?

Usar expresiones entre corchetes

Una expresión entre corchetes coincide con un carácter de un conjunto especificado:

s[ae]lls

Esto coincide con sells o salls en esa posición.

Cuando ^ es el primer carácter después de [, niega el conjunto:

s[^e]lls

Esto coincide con salls, pero no con sells, porque el carácter posterior a la primera s no puede ser e.

¿Con qué coincide [^e]?

Los intervalos pueden describir caracteres entre dos extremos:

d[a-c]g

Esto puede coincidir con dag, dbg o dcg. El comportamiento de los intervalos puede depender de la intercalación de la configuración regional. Las clases de caracteres como [[:lower:]], [[:upper:]] y [[:digit:]] suelen expresar la intención con mayor claridad.

Repetir y combinar patrones

Tanto en BRE como en ERE, * significa cero o más repeticiones del átomo anterior:

seashells*

Esto coincide con seashell seguido de cero o más caracteres s adicionales. En el modo ERE con grep -E, los operadores habituales incluyen:

  • +: una o más repeticiones.
  • ?: cero o una repetición.
  • |: la expresión de la izquierda o la de la derecha.
  • (...): agrupa expresiones.

Por ejemplo:

$ grep -E '^(cat|dog)s?$' animals.txt

Esto selecciona líneas completas iguales a cat, cats, dog o dogs. En el modo BRE, estos operadores tienen reglas de escape diferentes, así que no copies un patrón entre variantes sin comprobarlo.

¿Qué orden activa la sintaxis de expresiones regulares extendidas para el patrón ^(cat|dog)s?$?

Para practicar la selección mediante regex con herramientas de texto de Linux, prueba estos laboratorios prácticos:

  1. Buscar texto con grep en Linux - Aprende a buscar texto en archivos con grep, mostrar números de línea, usar anclas como ^ y $ y aprovechar expresiones regulares básicas y extendidas.
  2. Procesamiento de texto y expresiones regulares - Aprende a usar las herramientas grep, sed y awk, así como expresiones regulares para manipular texto y buscar patrones de forma eficiente.
  3. Extracción de correos y números - Usa grep y expresiones regulares para extraer direcciones de correo electrónico y números de un archivo.

Lección completada

Has completado regex (expresiones regulares)

Ahora puedes leer y construir expresiones regulares fundamentales orientadas a líneas.

  • Distingue los operadores regex de los comodines de rutas del shell.

  • Ancla coincidencias al principio o al final de una línea.

  • Coincide con un carácter mediante un punto o una expresión entre corchetes.

  • Niega conjuntos y usa clases de caracteres dependientes de la configuración regional.

  • Elige deliberadamente la sintaxis BRE o ERE.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Text-Fu Avanzado