Folha de dicas de expressões regulares
Correspondência de caracteres
| [abc] | Corresponde a qualquer um dos caracteres a, b ou c |
| [^abc] | Não corresponde aos caracteres a, b ou c. O “^” só é eficaz se aparecer como o primeiro caractere |
| [a-g] | Corresponde a qualquer caractere no intervalo a-g |
| [^a-g] | Não corresponde a nenhum caractere no intervalo a-g |
| [H-N] | Corresponde a qualquer caractere no intervalo H-N |
| [0-9] | Corresponde a qualquer caractere no intervalo 0-9 |
| [a-gH-N] | Corresponde a qualquer caractere nos intervalos a-g ou H-N |
| Curingas (Wildcards): | |
| . | [^\n\r], corresponde a qualquer caractere exceto quebra de linha |
| \s | Espaço em branco: quebra de linha, tabulação, espaço, etc. |
| \S | [^\s] (Qualquer coisa exceto espaços em branco) |
| \d | Dígito: [0-9] |
| \D | [^\d] (Qualquer coisa exceto dígitos) |
| \w | Caractere de palavra: [0-9A-Za-z_] |
| \W | [^\w] (Qualquer coisa exceto caracteres de palavra) |
Grupos de correspondência
| (a | b) |
| (…) | Grupo de captura |
| (?:…) | Grupo de não captura |
| (?<name>…) ou (?’name’…) | Grupo de captura nomeado, “name” pode ser personalizado |
| (?(condition)true_regex | false_regex) |
group(0) é usado para obter a string correspondente completa, enquanto group(>0) pode obter subgrupos de captura do resultado total.
Nota: grupos de captura nomeados são suportados desde o Java 1.7 (passando a string “name” como parâmetro para o método group). JS e Python não suportam grupos de captura nomeados nativamente no momento.
Faixa de frequência (Quantificadores)
| {3} | O item anterior aparece exatamente 3 vezes, equivalente a {3,3} |
| {3,6} | O item anterior aparece de 3 a 6 vezes |
| {3,} | O item anterior aparece pelo menos 3 vezes |
| {0,6} | O item anterior aparece no máximo 6 vezes |
| Curingas: | |
| * | {0,} (Zero ou mais) |
| + | {1,} (Um ou mais) |
| ? | {0,1} (Zero ou um) |
| \w* | Modo guloso (Greedy) |
| \w*? | Modo não guloso |
Âncoras (Fixadores de posição)
| ^ | Início da string |
| $ | Fim da string |
| \b | Boundary, limite de palavra |
| \B | Não é limite de palavra |
| Asserções de posição (Lookaround): | |
| (?=exp) | Asserção positiva para frente (sufixo exp) |
| (?<=exp) | Asserção positiva para trás (prefixo exp) |
| (?!exp) | Asserção negativa para frente (sem sufixo exp) |
| (?<!exp) | Asserção negativa para trás (sem prefixo exp) |
\b(\w+)\b é equivalente a (?<=\W?)(\w+)(?=\W?)