Folha de referências Regex
As expressões regulares são compactas o suficiente para que a sintaxe seja mais fácil de procurar do que memorizar. Esta página contém tudo em uma tela - classes, quantificadores, âncoras, grupos, lookaround, escape e sinalizadores - com um exemplo prático para cada linha.
O tipo é JavaScript, que é executado no seu navegador e usado pelo testador de regex neste site. A maior parte é idêntica em Python, Java, Go e PCRE; onde os sabores divergem, eles divergem nas bordas - suporte lookbehind, sintaxe de grupo nomeado e se \d significa "dígito ASCII" ou "qualquer dígito Unicode".
Duas coisas explicam a maior parte das surpresas. Os quantificadores são gananciosos: eles pegam tudo que podem e devolvem somente quando o resto do padrão falha, e é por isso que <.+> engole duas tags e <.+?> não. E a alternância é a mais frouxa de todas, então ^a|b$ significa "começa com a ou termina com b" - não o que a maioria das pessoas pretende quando o escreve.
Classes de personagens
As abreviações são somente ASCII, a menos que você adicione o sinalizador u e use escapes de propriedade Unicode.
| Sintaxe | Significado | Exemplo |
|---|---|---|
| . | Qualquer caractere, exceto uma quebra de linhaAdicione o sinalizador s para que ele corresponda também às novas linhas. | /a.c/"abc" → "abc" |
| \d | Um dígito, 0–9 | /\d+/"order 42" → "42" |
| \D | Qualquer coisa que não seja um dígito | /\D+/"42abc" → "abc" |
| \w | Letra, dígito ou sublinhadoApenas ASCII — "é" não é \w. | /\w+/"user_1!" → "user_1" |
| \W | Qualquer coisa \w não corresponde | /\W+/"a++b" → "++" |
| \s | Qualquer espaço em branco, incluindo tabulações e novas linhas | /\s+/"a \t b" → " \t " |
| \S | Qualquer caractere que não seja espaço em branco | /\S+/" hi" → "hi" |
| [abc] | Qualquer um dos personagens listados | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Qualquer personagem, exceto os listados | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Uma variedade de personagens | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Qualquer letra Unicode (precisa da bandeira u) | /\p{L}+/"42 café" → "café" |
Quantificadores
Todos estes são gananciosos por padrão: eles pegam o máximo que podem e devolvem apenas se o resto do padrão falhar.
| Sintaxe | Significado | Exemplo |
|---|---|---|
| * | Zero ou mais | /ab*/"a" → "a" |
| + | Um ou mais | /ab+/"abbb" → "abbb" |
| ? | Zero ou um – torna opcional | /colou?r/"color" → "color" |
| {3} | Exatamente três | /\d{3}/"id 12345" → "123" |
| {2,} | Dois ou mais | /a{2,}/"aaa" → "aaa" |
| {2,4} | Entre dois e quatro | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Preguiçoso – leva o mínimo possívelO ganancioso <.+> engoliria ambas as tags. | /<.+?>/"<a><b>" → "<a>" |
Âncoras e limites
Eles correspondem a uma posição, não a um personagem, portanto não consomem nada.
| Sintaxe | Significado | Exemplo |
|---|---|---|
| ^ | Início da string ou de uma linha com a flag m | /^a/"abc" → "a" |
| $ | Fim da string ou de uma linha com o sinalizador m | /c$/"abc" → "c" |
| \b | Um limite de palavraIsto é o que impede a correspondência de "cat" dentro de "concatenate". | /\bcat\b/"the cat sat" → "cat" |
| \B | Não é um limite de palavra | /\Bcat/"concatenate" → "cat" |
Grupos e alternância
| Sintaxe | Significado | Exemplo |
|---|---|---|
| (abc) | Grupo de captura — lembrado para substituição | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Agrupando sem capturarUse isto quando precisar apenas do agrupamento; mantém os números de captura significativos. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Grupo de captura nomeado | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Qualquer lado – alternânciaA alternância tem a precedência mais baixa: ^a|b$ é "^a" ou "b$", não "^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Referência retroativa ao primeiro grupo | /(\w)\1/"letter" → "tt" |
Olhe ao redor
Asserções sobre o que cerca uma posição. Eles próprios não combinam com nada, o que os torna seguros para serem combinados.
| Sintaxe | Significado | Exemplo |
|---|---|---|
| (?=…) | Lookahead - seguido por isto | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Lookahead negativo - não seguido por isso | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind – precedido por isto | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Lookbehind negativo - não precedido por isso | /(?<!\$)\b\d+/"about 40" → "40" |
Escapando
Esses doze caracteres são os que precisam de uma barra invertida para serem interpretados literalmente.
| Sintaxe | Significado | Exemplo |
|---|---|---|
| \. | Um ponto literal | /\d\.\d/"v2.5" → "2.5" |
| \\ | Uma barra invertida literal | /\\/"C:\\dir" → "\\" |
| \n | Um feed de linha | /a\nb/"a\nb" → "a\nb" |
| \t | Uma guia | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Um personagem por seu ponto de código | /\u00e9/"café" → "é" |
Bandeiras
| Bandeira | Nome | Significado |
|---|---|---|
| g | Global | Encontre todas as correspondências, não apenas a primeira. |
| i | Ignorar caso | Corresponder independentemente de maiúsculas ou minúsculas. |
| m | Multilinha | Faz com que ^ e $ correspondam a cada quebra de linha, em vez de apenas no final da string. |
| s | Ponto tudo | Vamos. combinar quebras de linha também. |
| u | Unicode | Trata o padrão como pontos de código e habilita escapes de propriedade \p{…}. |
| y | Pegajoso | Corresponde exatamente ao lastIndex, nunca pesquisando para frente. |