Hoja de referencia de expresiones regulares
Coincidencia de caracteres
| [abc] | Coincide con cualquiera de los caracteres a, b o c |
| [^abc] | No coincide con los caracteres a, b o c. El “^” solo es efectivo si aparece como el primer carácter |
| [a-g] | Coincide con cualquier carácter en el rango a-g |
| [^a-g] | No coincide con ningún carácter en el rango a-g |
| [H-N] | Coincide con cualquier carácter en el rango H-N |
| [0-9] | Coincide con cualquier dígito en el rango 0-9 |
| [a-gH-N] | Coincide con cualquier carácter en los rangos a-g o H-N |
| Comodines (Wildcards): | |
| . | [^\n\r], coincide con cualquier carácter excepto el salto de línea |
| \s | Espacio en blanco: salto de línea, tabulación, espacio, etc. |
| \S | [^\s] (Cualquier cosa excepto un espacio en blanco) |
| \d | Dígito: [0-9] |
| \D | [^\d] (Cualquier cosa excepto un dígito) |
| \w | Carácter de palabra: [0-9A-Za-z_] |
| \W | [^\w] (Cualquier cosa excepto un carácter de palabra) |
Grupos de coincidencia
| (a | b) |
| (…) | Grupo de captura |
| (?:…) | Grupo de no captura |
| (?<name>…) o (?’name’…) | Grupo de captura nombrado, “name” se puede personalizar |
| (?(condition)true_regex | false_regex) |
group(0) se utiliza para obtener la cadena completa coincidente, mientras que group(>0) puede extraer subgrupos de captura del resultado global.
Nota: Los grupos de captura nombrados solo se admiten a partir de Java 1.7 (pasando la cadena “name” como argumento al método group). JS y Python no admiten grupos de captura nombrados de forma nativa por el momento.
Rangos de frecuencia (Cuantificadores)
| {3} | El elemento anterior aparece exactamente 3 veces, equivalente a {3,3} |
| {3,6} | El elemento anterior aparece de 3 a 6 veces |
| {3,} | El elemento anterior aparece al menos 3 veces |
| {0,6} | El elemento anterior aparece como máximo 6 veces |
| Comodines: | |
| * | {0,} (Cero o más) |
| + | {1,} (Uno o más) |
| ? | {0,1} (Cero o uno) |
| \w* | Modo codicioso (Greedy) |
| \w*? | Modo no codicioso |
Anclas (Posicionadores)
| ^ | Inicio de cadena |
| $ | Fin de cadena |
| \b | Límite de palabra (Boundary) |
| \B | No es un límite de palabra |
| Aseveraciones de posición (Lookaround): | |
| (?=exp) | Aseveración positiva hacia adelante (sufijo exp) |
| (?<=exp) | Aseveración positiva hacia atrás (prefijo exp) |
| (?!exp) | Aseveración negativa hacia adelante (no hay sufijo exp) |
| (?<!exp) | Aseveración negativa hacia atrás (no hay prefijo exp) |
\b(\w+)\b es equivalente a (?<=\W?)(\w+)(?=\W?)