Puedes combinar expresiones regulares con los siguientes caracteres, llamados operadores de expresiones regulares, o metacaracteres, para incrementar el poder y versatilidad de las expresiones regulares.
Aquí tienes una tabla de metacaracteres. Todos los caracteres que no aparecen no tienen ningún significado especial en una expresión regular.
^
Esto busca el principio de la cadena o el principio de una línea dentro de la cadena. Por ejemplo:
^@capítulo
coincide con ‘@capítulo’ al principio de una cadena, y puede ser usada para identificar comienzos de capítulos en ficheros fuentes Texinfo.
$
Esto es similar a ‘~’, pero encaja solo al final de una cadena o el final de una línea dentro de la cadena. Por ejemplo:
p$
encaja con un registro que acabe en ‘p’.
.
Esto encaja con cualquier carácter único, excepto el carácter nueva línea. Por ejemplo:
.P
encaja con cualquier carácter que vaya seguido por una ‘P’ en una cadena. Usando la concatenación podemos hacer expresiones regulares como ‘U.A’, la cual encaja con cualquier secuencia de 3 caracteres que comiencen con una ‘U’ y acaben con ‘A’.
[...]
Esto recibe el nombre de conjunto de caracteres. Encaja con cualquiera de los caracteres encerrados entre los corchetes. Por ejemplo:
[MVX]
encaja con cuales quiera de los caracteres ‘M’, ‘V’, y ‘X’ en una cadena.
Se pueden especificar rangos de caracteres utilizando un guión entre el carácter de inicio y el carácter final del intervalo de caracteres, y encerrando entre los corchetes. Por ejemplo:
[0-9]
encaja con cualquier dígito.
Para incluir cualquiera de estos caracteres `\', `]', `-' o `^' en un conjunto de caracteres, pon un ‘\’ antes del carácter en cuestión. Por ejemplo:
[d\]]
encaja con ‘]’ o ‘d’.
Este tratamiento de ‘\’ es compatible con otras implementaciones de awk pero incompatible con la expecificación POSIX propuesta para awk. El borrador actual especifica el uso de la misma sintáxis usada en egrep.
Podríamos cambiar gawk para que encajase con el estándar, una vez que estuviésemos seguros de que no volverá a cambiar. Mientras tanto, la opción ‘-a’ es pecifica la sintaxis de awk tradicional descrita anteriormente (la cual es también la sintaxis por defecto), mientras que la opción ‘-e’ especifica la sintaxis egrep.
En la sintáxis egrep, la barra invertida no tiene sintácticamente significado especial dentro de las llaves. Esto significa que tienen que ser usados trucos especiales para representar los caracteres `]', `-' y `^' como miembros de un conjunto de caracteres.
Para buscar un coincidencia del carácter `-', escríbelo como `---', lo cual es un rango que contiene únicamente el carácter `-'. Podrías también dar `-' como el primer o el último carácter del conjunto. Para buscar una coincidencia del carácter `^', ponlo en cualquier lugar excepto como el primer carácter de un conjunto. Para buscar una coincidencia del carácter `]', haz que sea el primer carácter del conjunto. Por ejemplo:
[]d^]
encaja con `]', `d' o `^'.
[^ ...]
Esto es el conjunto de caracteres complementario. El primer carácter después del ‘[‘ debe ser un ‘^’. Encaja con cuales quiera caracteres excepto aquellos que se meten entre los corchetes. Por ejemplo:
[^0-9]
encaja con cualquier carácter que no sea un dígito.
|
Este es el operador alternación y se usa para especificar alternativas. Por ejemplo:
^P|[0-9]
encaja con cualquier cadena que encaje con `^P' o con `[0-9]'. Esto significa que encaja con cualquier cadena que contenga un dígito o comience por ‘P’.
La alternación se aplica a la expresión regular posible más grande a cada lado.
(...)
Los paréntesis se usan para agrupar expresiones regulares del mismo modo que en las aritméticas. Pueden ser usados para concatenar expresiones regulares que contengan el operador alternacion ‘|’.
*
Este símbolo significa que la expresión regular precedente se va a repetir tantas veces como sea posible para encontrar una concordancia. Por ejemplo:
ph*
aplica el símbolo ‘*’ a la ‘h’ precedente y busca la concordancia de una ‘p’ seguida por cualquier número de haches. También encajará con una única ‘p’ que no vaya seguida por ninguna ‘h’.
El ‘*’ repite la expresión precedente más pequeña posible. (use paréntesis si deseas repetir una expresión más grande) Encuentra tantas repeticiones como sea posible. Por ejemplo:
awk '/\(c[ad][ad]*r x\)/ { print }' sample
imprime cada registro de la entrada que contenga cadenas de la siguiente forma `(car x)', `(cdr x)', `(cadr x)', y así sucesivamente.
+
Este símbolo es similar a ‘*’, pero la expresión precedente debe encajar al menos una vez. Esto significa que:
wh+y
encajará con ‘why’ y ‘whhy’ pero no con ‘wy’, donde sin embaro ‘wh*y’ encajaría con las tres combinaciones. Esta es una forma más simple de escribir el último ejemplo ‘*’:
awk '/\(c[ad]+r x\)/ { print }' sample
?
Este símbolo es similar a ‘*’, pero la expresión regular precedente puede encajar una vez o ninguna. Por ejemplo:
fe?d
encajará con ‘fed’ o ‘fd’ y nada más.
\
Esto se usa para suprimir el significado especial de un carácter en un matching. Por ejemplo:
\$
busca una coincidencia del carácter `$'.
Las secuencias escape usadas para constantes de cadena son válidas en expresiones regulares también; ellas son también precedidas por un ‘\’.
En las expresiones regulares, los operadores ‘*’, ‘+’ y ‘?’ tienen la precedencia mayor, seguidos por la concatenación, y finalmente por ‘|’. Como en las aritméticas, los paréntesis pueden cambiar el modo en que se agrupen los operadores.
0 Comentarios