Expresiones regulares

Hay una serie de caracteres que son útiles en las expresiones regulares:

Símbolo Descripción
. Cualquier caracter
[char] Cualquier caracter del set
[^char] Cualquier caracter no incluido en el set
^ Principio de la línea
$ Final de la línea
\w Una palabra = [A-Za-z0-9_]
\s Cualquier espacio en blanco = [ \f\t\n\r]
\d Dígito = [0-9]
| OR - elemento a la izquierda o a la derecha
(expr) Agrupa y limita los elementos capturables
? 0 o 1 instanciaa del caracter precedente
* 0 o muchas instancias del caracter precedente
+ 1 o muchas instancias del caracter precedente
{n} n instancias del caracter precedente
{m,} Al menos m instancias del caracter precedente
{m,M} De m a M instancias del caracter precedente

NOTA: * no se usa igual que en shell globbing, porque requiere un elemento precedente; el equivalente en regex sería .*.

El matching se realiza de forma avariciosa (greedy) por defecto; se intenta hacer un match con todo, y después se va retrocediendo hasta que se llega a lo mínimo útil. La variante perezosa (lazy) de * es *?, y la de + es +?.

Otros ejemplos:

Ejemplo Descripción
[tT]he Reconoce The y the
^$ Reconoce líneas en blanco
^\d{5}& Reconoce números de 5 dígitos