REGEX(7)

NOMBRE
regex - expresiones regulares

DESCRIPCIÓN

Una expresión regular es un patrón que describe un conjunto de cadenas de caracteres. Las expresiones regulares se construyen de forma análoga a las aritméticas, empleándose varios operadores para combinar expresiones más pequeñas.

Hay dos versiones diferentes de la sintaxis de las expresiones regulares: la ``básica'' y la ``extendida''. En algunas implementaciones (como en la del grep de GNU), no hay ninguna diferencia entre las dos en cuanto a la funcionalidad disponible con cada una. En otras implementaciones, las expresiones regulares básicas son menos potentes. La descripción siguiente se aplica a las expresiones regulares extendidas; las diferencias con las básicas se resumen después.

Los bloques de construcción fundamentales son las expresiones regulares que concuerdan con un solo carácter. La mayoría de los caracteres, incluyendo todas las letras y los dígitos, son expresiones regulares que concuerdan consigo mismos. Cualquier meta-carácter con un significado especial puede ser protegido precediéndolo con una barra inclinada inversa.

Una lista de caracteres rodeados por [ y ] concuerda con cualquier carácter solo de los de la lista; pero si el primer carácter de ella es el acento circunflejo ^ entonces concuerda con cualquier carácter que no esté en la lista. Por ejemplo, la expresión regular [0123456789] concuerda con cualquier dígito. Se puede especificar un rango de caracteres ASCII dando el primero y el último, separados por un guión. Finalmente, ciertas clases de caracteres tienen nombres predefinidos, y uno puede referirse a ellas por éstos. Los nombres son auto-explicativos, y son los siguientes: [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], y [:xdigit:]. Por ejemplo, [[:alnum:]] significa [0-9A-Za-z], excepto en que la última forma depende de que se use la codificación de caracteres ASCII, mientras que la primera es transportable. (Note que en estos nombres de clases los corchetes son parte de los nombres simbólicos, y deben incluirse aparte de los que delimiten la lista entre corchetes.) La mayoría de los meta-caracteres pierden su significado especial cuando están dentro de listas. Para incluir un ] literal, póngase el primero de la lista. De forma similar, para incluir un ^ literal, póngase en cualquier posición menos en la primera. Finalmente, para incluir un - literal, póngase el último.

El punto . concuerda con cualquier carácter. El símbolo \w es un sinónimo de [[:alnum:]] y \W lo es de [^[:alnum]].

El acento circunflejo ^ y el signo del dólar (o del escudo portugués) $ son meta-caracteres que concuerdan respectivamente con la cadena vacía al principio y al final de una línea. Los símbolos \< y \> concuerdan respectivamente con la cadena vacía al principio y al final de una palabra. El símbolo \b concuerda con la cadena vacía al borde de una palabra, y \B concuerda con la cadena vacía si no está en el extremo de una palabra.

A una expresión regular que concuerde con un solo carácter puede seguir uno de los varios operadores de repetición:
?   El elemento precedente es opcional y concordaba como mucho una vez.
*   El elemento precedente concordará cero o más veces.
+   El elemento precedente concordará una o más veces.
{n} El elemento precedente va a concordar exactamente n veces.
{n,}
    El elemento precedente ha concordado n o más veces.
{,m}
    El elemento precedente es opcional y ha concordado como mucho m veces.
{n,m}
    El elemento precedente ha concordado como poco n veces, pero no más de m veces.

Dos expresiones regulares pueden concatenarse; la expresión regular resultante concuerda con cualquier cadena de caracteres formada por la concatenación de dos subcadenas que concuerden respectivamente con las subexpresiones concatenadas.

Dos expresiones regulares pueden juntarse por medio del operador infijo |; la expresión regular resultante concuerda con cualquier cadena que lo haga con cualquiera de las subexpresiones.

La repetición tiene precedencia sobre la concatenación, la cual a su vez la tiene sobre la alternancia. Una subexpresión entera puede encerrarse entre paréntesis para modificar estas reglas de precedencia.

La retrorreferencia \n , donde n es un solo dígito, concuerda con la subcadena que previamente concordaba con la n-sima subexpresión entre paréntesis de la expresión regular.

En las expresiones regulares básicas, los meta-caracteres ?, +, {, |, (, y ) pierden su significado especial; en su lugar emplee las versiones protegidas por la barra inclinada inversa \?, \+, \{, \|, \(, y \).

OBSERVACIÓN
Esta página del Manual de Debian/GNU Linux se ha extraído de la de grep(1).

VÉASE TAMBIÉN
regcomp(3), grep(1)