Expresiones Regulares Cheat Sheet
238 Visitas 10 minutos Enlace Permanente
Resumen de las opciones más típicas de las expresiones regulares para cualquier lenguaje de programación y editor de textos
-
Resumen
-
Literales
- Las letras y los números emparejan tal cual.
- Casi todos los caracteres especiales, también: @ – = %
- Pero algunos, necesitan de la barra invertida:
\. \^ \$ \* \+ \? \{ \} \[ \] \( \) \| \\
-
Comentarios
- (?# comentario) Sin el modificador x.
- # comentario Con el modificador x.
-
Clases
- . (punto) representa cualquier carácter salvo la nueva línea [Para UNICODE, usar \X].
- [x] lista o rangos de caracteres:
- [abc] lista de caracteres a emparejar.
- [a-z] rango de caracteres ([a-z] [A-Z] [0-9] son los más comunes).
- [:clase:] clase POSIX.
- [.clase.] clase específica de un idioma ([.span-ll.] se corresponde con la ll española).
- [=a=] caracteres equivalentes de un idioma ([=a=] se corresponde con a, á y à).
El guión debe ir siempre al inicio de la clase, para evitar rangos: [–_a-zA-Z]
El circunflejo NO debe ir al inicio de la clase, para evitar inicio de cadena: [a-zA-Z^]
- [^x] cualquier carácter salvo los indicados (negación de clase).
- Operaciones:
- Sustracción: [[a-z]–[aeiou]] al rango de letras le quita las vocales.
- Lógicas:
- Unión (OR): [[a-z][0-9]] letras minúsculas más números.
- Intersección (AND): [[0-6]&&[5-9]] sólo los números 5 y 6.
- Sustracción: [[a-z]&&[^aeiou]] consonantes minúsculas.
-
Contadores
- * (estrella): cero o más veces: x* [x]* (x)*
- + (más): una o más veces: x+ [x]+ (x)+
- ? (interrogación): cero o una vez: x? [x]? (x)?
- {n} (número exacto): un número exacto de veces: x{n} [x]{n} (x){n}
- {m,n} (rango): entre m y n veces: x{m,n} [x]{m,n} (x){m,n}
- {m,} (al menos): m o más veces: x{m,} [x]{m,} (x){m,}
- {,n} (como máximo): entre cero y n veces: x{,n} [x]{,n} (x){,n}
- Avaricia:
- Por defecto, los contadores intentarán emparejarse con la cadena más larga posible.
- ? (no avaricia): empareja con la cadena más corta posible: x*? x+? x?? x{m,n}?
-
Grupos
- (x) define el contenido un grupo para luego poderlo referenciar o usar con contadores.
- (?:x) permite usar el contenido con contadores pero evitándolo usar para referencias.
- (?<nombre>) grupo que permite referenciarlo por su nombre en vez de por un índice.
- Alternativa: (?P<nombre>)
- Referencias (Dentro de la misma regex):
- \n referencia a un grupo por su índice. Alternativas: \gn \g{n} \g{–n} \g<n>
- \k<nombre> referencia a un grupo con nombre. Alternativa: (?P=nombre) \g<nombre>
-
Reemplazos
- $n referencia a un grupo por su índice cuando se reemplaza en un texto (fuera de la regex).
- Mayúsculas y Minúsculas:
- \u siguiente carácter en mayúsculas.
- \l siguiente carácter en minúsculas.
- \U comienzo de conversión en mayúsculas.
- \L comienzo de conversión en minúsculas.
- \E final de conversión.
- Inserciones Condicionales:
- (?n:texto) inserta texto si la referencia posee un valor.
- (?n:texto:otro) inserta texto u otro según la referencia tenga o no valor.
-
Alternancia
- | (Barra): cualquiera entre dos opciones: x|y
- Grupos: baja precedencia, debe agruparse para evitar ambigüedades:
(un raton|perro rojo) → (un ratón) o (perro rojo)
(un (raton|perro) rojo) → (un ratón rojo) o (un perro rojo)
-
Vistazos
- Hacia Adelante:
- x(?=y) x seguido de y.
- x(?!y) x no seguido de y.
- Hacia Atrás:
- (?<=y)x x precedido de y.
- (?<!y)x y precedido de x.
-
Condicionales
- (?(condición)patrón) Si se cumple la condición, se ejecuta el patrón: (?(?<=tfno)\d+|\w+)
- (?(condición)patrón-sí|patrón-no) Se ejecuta un patrón u otro dependiente de una condición.
- Referencias: en el patrón se puede referenciar un grupo de la condición con (n)
-
Recursividad
- (?n) referencia recursiva numerada.
- (?0) referencia a toda la regex. Alternativa: (?R)
- (?&nombre) referencia recursiva con nombre.
-
Modificadores
- i (IGNORECASE): no tiene en cuenta mayúsculas y minúsculas.
- g (GROUPS): busca todas las ocurrencias y no sólo la primera.
- m (MULTILINE): detecta \n como final de una cadena y principio de otra.
- s (DOTALL): el punto se empareja con caracteres de nueva línea.
- x (VERBOSE): formato libre, permite saltos de línea, comentarios # e ignora espacios en blanco.
- l (LOCALE): tiene en cuenta que el texto está en el idioma local de la máquina.
- u (UNICODE): tienen en cuenta que el texto está en UNICODE.
-
Metacaracteres
-
Enlaces
- ^ inicio de cadena. Con el modificador m, inicio de línea.
- $ fin de cadena. Con el modificador m, fin de línea.
- \A inicio de cadena.
- \Z fin de cadena. Alternativa: \z
- \< inicio de palabra.
- \> fin de palabra.
- \b inicio o fin de palabra.
- \B no es inicio o fin de palabra.
- \G posición de la primera coincidencia.
-
Caracteres No Imprimibles
- \a alarma (BEL x07)
- \b retroceso (BS x08)
- \cx tecla Ctrl más carácter x.
- \e escape (ESC x1B)
- \f formfeed (FF x0C)
- \n nueva línea (LF x0A)
- \r retorno de carro (CR x0D)
- \t tabulador (TAB x09)
- \v tabulador vertical (VT x0B)
- \0 nulo (NUL x00)
- \ddd número en octal.
- \xhh número en hexadecimal (1 byte).
- \x{hhhh} número en hexadecimal (2 o más bytes).
- \uhhhh carácter en UNICODE, indicado en hexadecimal. Alternativa: \Uhhhh
-
Tipos Genéricos
- \d dígito decimal [0-9] Negación: \D
- \s carácter de espacio en blanco [ \t\n\r\f\v] Negación: \S
- \w carácter de palabra [a-zA-Z0-9_] Negación: \W
-
Clases POSIX
- [:alnum:] letras y dígitos decimales.
- [:alpha:] sólo letras.
- [:ascii:] sólo los primeros 127 caracteres ASCII.
- [:blank:] espacios en blanco y tabuladores.
- [:cntrl:] caracteres de control.
- [:digit:] sólo dígitos decimales.
- [:graph:] caracteres imprimibles salvo el espacio en blanco.
- [:lower:] letras en minúscula.
- [:print:] caracteres imprimibles más el espacio en blanco.
- [:punct:] caracteres imprimibles salvo letras y dígitos decimales.
- [:space:] espacios en blanco.
- [:upper:] letras en mayúscula.
- [:word:] caracteres de las palabras.
- [:xdigit:] dígitos hexadecimales.
-
Propiedades UNICODE
- Definición:
- \p{x} caracteres que cumplen una propiedad UNICODE.
- \P{x} negación de la propiedad.
- Propiedades*:
- L {Letter} letras:
- Ll letras en minúsculas.
- Lu letras en mayúsculas.
- M {Mark} acentos, tildes, diéresis, circunflejos, etc. (se combinan con otros caracteres).
- Z {Separator} caracteres separadores:
- Zs espacios en blanco.
- Zp separador de párrafos.
- S {Symbol} símbolos:
- Sm símbolos matemáticos.
- Sc símbolos de monedas.
- N {Number} números:
- Nd números decimales.
- Nl números romanos.
- P {Punctuation} caracteres de puntuación:
- Pi carácter de inicio de bloque: ( { [
- Pf carácter de fin de bloque: ) } ]
- C {Other} otros caracteres:
- Cc caracteres de control.
* De las específicas sólo se han incluido algunas, las más comunes.
- Bloques:
- Alfabetos: {harigana} {katakana} {hebrew}