Se dice expresión regular de la descripción de una cadena en
términos de repeticiones de carácteres. Así, por ejemplo, podemos
decir que ``palabra formada de una mayúscula seguida de una o más
minúsculas'' es la expresión regular de nombres. En términos de
lenguaje matématico escribiríamos: 2#2 con lo cual
significamos lo mismo que en la frase anterior. Los carácteres para
denotar la repetición son: ?
cero o una aparición, *
cero o varias apariciones y +
una o varias
apariciones. Empleamos los corchetes []
para agrupar conjuntos
de carácteres, en el ejemplo hablamos del conjunto de letras
mayúsculas y en el segundo de las minúsculas. También podemos emplear
el conjunto que no contiene a los carácteres dados, por ejemplo para
hablar del conjunto de todos los carácteres salvo los signos de
puntuación, diríamos: [^,;\.]
, que como vemos, al punto lo
precedemos de una diagonal invertida para escapar5.2 su
significado normal: cualquier carácter. El carácter ^
además
tiene el significado de servir como ancla de principio de línea,
mientras que el signo $
sirve como ancla del fin de línea. Por
ejemplo si queremos hablar de las líneas que comiencen con un signo de
igual y que terminen con un punto, diríamos:
^=(.*)\.$
. Introducimos los paréntesis para especificar que
después del siigno de igual se puede repetir cualquier carácter,
aunque en el ejemplo es implícito.
Patrones repetitivos se pueden agrupar con paréntesis, por
ejemplo para denotar la gramática que comprende a las palabras que
comienzan con 3#3 y después se repite un numero arbitrario de veces la
cadena 4#4 y terminan con 5#5, diríamos: c(ab)*d
. Son palabras
válidas en éste lenguaje:
6#6, etc.
Cualquiera de los carácteres especiales que sea necesario
utilizar en la expresión con su representación, basta con escaparlos
con la diagonal invertida. Si queremos representar el conjunto de
palabras --incluidos signos de puntuación, dígitos, etc-- que van
encerrados entre paréntesis, podemos usar: ( )(\(.*\))( ))
.