Next: Ficheros avanzados
Up: Cuestiones avanzadas
Previous: Cuestiones avanzadas
  Índice General
  Índice de Materias
Una expresión regular es la descripción de una serie de caracteres.
Esta descripción se puede usar para buscar en un fichero texto que coincida con la expresión regular.
Las expresiones regulares son similares a los comodines del intérprete de órdenes
o shell
(véase la sección 12.6 en la página ),
pero son más complejas y potentes.
Las expresiones regulares se componen de texto y metacaracteres.
Un metacarácter no es más que un carácter con un significado especial.
Entre los metacaracteres se incluyen:
. * [] - \^ $.
Si una expresión regular contiene solamente texto sin metacaracteres,
coincidirá con ese texto. Por ejemplo, la expresión regular
«mi expresión regular» coincide con el texto
«mi expresión regular» y con nada más. Las expresiones regulares
normalmente son sensibles a mayúsculas y minúsculas.
Para visualizar todas las líneas de un fichero que contienen
cierta expresión regular, puede usar la orden egrep.
Su sintaxis es la siguiente:
egrep 'expresionregular' nombrefichero1 ...
Las comillas simples no siempre son necesarias, pero añadirlas
nunca vendrá mal.
Por ejemplo, para encontrar todas las líneas que contengan la palabra GNU
en la Licencia Pública General (GPL), escriba:
egrep 'GNU' /usr/doc/copyright/GPL
egrep imprimirá las líneas por la salida estándar.
Si desea obtener todas las líneas que contengan la palabra freedom
seguida por un una cantidad indeterminada de texto, seguida por
GNU, haga lo siguiente:
egrep 'freedom.*GNU' /usr/doc/copyright/GPL
El punto . significa
«cualquier carácter»,
y el asterisco * significa
«cero o más apariciones del carácter precedente»,
en este caso «cero o más apariciones de cualquier carácter».
De manera que .* coincide en general con cualquier texto.
egrep sólo crea coincidencias línea por línea,
de forma que freedom y GNU
tienen que estar en la misma línea.
He aquí un resumen de los metacaracteres de las expresiones regulares:
- .
- Coincide con cualquier carácter individual excepto el salto de línea.
- *
- Coincide con cero o más apariciones de la expresión
precedente. Es decir, que la expresión a* coincide con cero
más apariciones de a minúsculas,
y .* coincide con cero o más caracteres.
- [caracteres]
- Los paréntesis cuadrados deben contener uno o más caracteres;
la expresión completa entre los paréntesis coincide exactamente
con uno o más caracteres en la serie. De esta forma,
[abc]coincide con una a, una b, o una c;
no coincide con cero caracteres,
y no coincide con otro carácter que no sea uno de estos tres.
- ^
- Fija la búsqueda al principio de la línea.
La expresión
^The coincide con The
cuando aparece al principio de la línea. No puede haber espacios antes de
The. Si desea permitir espacios, puede permitir cero o más espacios
de la manera siguiente:
^*The.
- $
- Coincide con el final de la línea.
end$ precisa que el texto end
esté al final de la línea, sin espacios ni texto en medio.
- [^caracteres]
- Esta expresión
invierte el sentido de una lista entre paréntesis cuadrados.
De esta forma, [^abc] coincide con cualquier carácter único
excepto a, b, or c.
- [carácter-carácter]
- Puede especificar un rango de caracteres dentro de una lista
de paréntesis cuadrados. Para coincidir con cualquier letra minúscula,
utilice [a-z]. Puede especificar más de un rango;
de esta manera, para especificar las tres primeras o las tres últimas letras
del abecedario, escriba [a-cx-z].
Para especificar cualquier letra, sea mayúscula o minúscula,
pruebe con [a-zA-Z]. Puede poner juntos rangos de caracteres
y caracteres únicos, además del metacarácter ^metacharacter;
por ejemplo [^a-zBZ]significa «cualquier carácter,
excepto una letra minúscula, una B mayúscula o una Z mayúscula».
- ()
- Puede utilizar los paréntesis para agrupar
partes de la expresión regular, igual que lo haría
con una expresión matemática.
- |
- Significa «o». Utilícelo para especificar
una serie de expresiones alternativas. Generalmente deseará
poner las alternativas entre paréntesis, de la siguiente manera:
c(ad|ab|at)coincide con cad o bien cab o bien cat.
Sin los paréntesis, coincidiría con cad o ab o at.
- \
- Permite escapar cualquier
carácter especial; si desea encontrar literalmente un asterisco
*, escriba \*.
La barra invertida permite ignorar el significado especial
al que estamos acostumbrados para *.
He aquí algunos ejemplos más que le ayudarán a formarse
una impresión general de la cuestión:
- c.pa
- coincide entre otros con cepa, capa, copa, copar.
- c\ .pa
- coincide con c.pa, c.par.
- sto*p
- coincide con stp, stop, stoop.
- car.*n
- coincide con carton, cartoon, carmen.
- xyz.*
- coincide con xyz y con cualquier cosa que le siga;
algunas herramientas, como egrep, coinciden sólo
con cualquier cosa que le siga hasta el final de la línea.
- ^The
- coincide con The al principio de la línea.
- tiempo$
- coincide con tiempo al final de la línea.
- ^Solo$
- coincide con una línea que está compuesta
únicamente por la palabra Solo, sin espacios, ni otros caracteres,
nada en absoluto. Sólo se permite la palabra Solo.
- p[aeo]sa
- coincide con pasa, pesa, posa.
- Ca[D-F]re
- coincide con CaDre, CaEre, CaFre.
- Ver[^0-9]
- coincide con Ver
seguido por cualquier carácter que no sea un número.
- sal[ai][rn]
- coincide con salar, salan, salir, salin.
- [A-Za-z][A-Za-z]*
- coincide con cualquier palabra
que esté compuesta únicamente y al menos por una letra.
No coincidirá con números o espacios.
Next: Ficheros avanzados
Up: Cuestiones avanzadas
Previous: Cuestiones avanzadas
  Índice General
  Índice de Materias
Enrique Zanardi
2000-11-26