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 de las opciones más típicas de las expresiones regulares para cualquier lenguaje de programación y editor de textos

  1. Resumen

  1. Literales

  • Las letras y los números emparejan tal cual.
  • Casi todos los caracteres especiales, también: @ – = %
  • Pero algunos, necesitan de la barra invertida:
    \. \^ \$ \* \+ \? \{ \} \[ \] \( \) \| \\
  1. Comentarios

  • (?# comentario) Sin el modificador x.
  • # comentario Con el modificador x.
  1. 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.
  1. 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}?
  1. 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>
  1. 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.
  1. 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)
  1. 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.
  1. 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)
  1. Recursividad

  • (?n) referencia recursiva numerada.
  • (?0) referencia a toda la regex. Alternativa: (?R)
  • (?&nombre) referencia recursiva con nombre.
  1. 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.
  1. Metacaracteres

  1. 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.
  1. 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
  1. 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
  1. 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.
  1. 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}