Pesquise nas quarenta linhas por sintaxe, significado ou exemplo, ou leia a tabela inteira. As notas mostram onde JavaScript, PCRE, Python, Java, .NET, Go e Ruby divergem.
Funciona localmente no seu navegador| Sintaxe | Função | Exemplo |
|---|---|---|
\ | Escapa um metacaractere ou inicia uma sequência especial. | \. corresponde a um ponto literal. |
^ | Corresponde ao início da entrada ou de uma linha no modo multilinha. | ^Error |
$ | Corresponde ao fim da entrada ou de uma linha no modo multilinha. | done$ |
i, m, s, u, x | Sinalizadores escritos depois do delimitador de fechamento: i ignora maiúsculas e minúsculas, m faz ^ e $ coincidirem com quebras de linha, s faz . corresponder também a quebras de linha, u ativa o modo Unicode no JavaScript e x ignora espaços não escapados e comentários com # em PCRE, Python, Java e Ruby. | /^done$/im |
. | Corresponde a um caractere; quebras de linha ficam de fora, salvo no modo dot-all. | a.c |
* | Repete o token anterior zero ou mais vezes. | ab*c |
+ | Repete o token anterior uma ou mais vezes. | ab+c |
? | Torna o token anterior opcional. | colou?r |
{n} | Repete o token anterior exatamente n vezes. | \d{4} |
{n,} | Repete o token anterior pelo menos n vezes. | \w{3,} |
{n,m} | Repete o token anterior de n a m vezes. | [A-F0-9]{2,8} |
*?, +?, ?? | Usa repetição lazy e consome o mínimo possível da entrada. | <.*?> |
*+, ++, ?+ | Quantificadores possessivos: casam de forma greedy e nunca devolvem caracteres, então o mecanismo não pode fazer backtracking dentro deles. PCRE, Perl, Java e Python 3.11 ou superior oferecem suporte; JavaScript, Go e versões anteriores do Python não. | \d++ |
(?>pattern) | Grupo atômico: o grupo mantém a primeira correspondência e não é reavaliado durante o backtracking. PCRE, .NET, Java, Perl e Python 3.11 ou superior oferecem suporte; JavaScript não tem grupos atômicos. | (?>a|ab)c |
[abc] | Corresponde a um caractere do conjunto. | gr[ae]y |
[^abc] | Corresponde a um caractere que não pertence ao conjunto. | [^0-9] |
[a-z] | Corresponde a um caractere do intervalo indicado. | [A-Za-z] |
[[:alpha:]] | Classe de caracteres POSIX dentro de uma expressão entre colchetes, suportada por PCRE, Java, Ruby e mecanismos no estilo grep, mas não por JavaScript ou Python, onde a propriedade Unicode é a forma portável. | [[:digit:]]+ |
x|y | Corresponde à expressão da esquerda ou à da direita. | cat|dog |
(pattern) | Agrupa uma subexpressão e captura a correspondência. | (ab)+ |
(?:pattern) | Agrupa uma subexpressão sem criar captura. | (?:https?):// |
(?<name>pattern) | Cria um grupo de captura nomeado quando o mecanismo oferece suporte. | (?<year>\d{4}) |
(?P<name>pattern) | Forma de grupo nomeado usada pelo Python e pelo mecanismo RE2 do Go, que não aceita referência inversa ao grupo. | (?P<year>\d{4}) |
(?'name'pattern) | Forma alternativa de grupo nomeado usada por .NET, PCRE, Perl e Ruby; Java e JavaScript aceitam apenas a forma com sinais de menor e maior. | (?'year'\d{4}) |
\1 | Corresponde ao mesmo texto capturado pelo primeiro grupo. | \b(\w+)\s+\1\b |
\k<name> | Referência inversa a um grupo nomeado em JavaScript, .NET, PCRE, Java e Ruby; o Python escreve a forma com P=. | (?<w>\w+)\s+\k<w> |
(?=pattern) | Lookahead positivo: exige uma correspondência posterior sem consumi-la. | \d+(?=px) |
(?!pattern) | Lookahead negativo: exige que o texto posterior não corresponda. | foo(?!bar) |
(?<=pattern) | Lookbehind positivo: exige uma correspondência anterior sem consumi-la. | (?<=\$)\d+ |
(?<!pattern) | Lookbehind negativo: exige que o texto anterior não corresponda. | (?<!-)\b\d+ |
\A, \z, \Z | Âncoras para o início e o fim absolutos da string em PCRE, Python, Java e Ruby; nesses mecanismos a forma de fim também aceita uma quebra de linha final. JavaScript não tem equivalente, então use ^ e $ sem o sinalizador m. | \A\d{4}\z |
\d / \D | Corresponde a um dígito / não dígito. O comportamento Unicode depende do mecanismo. | \d+ |
\w / \W | Corresponde a um caractere de palavra / não pertencente a palavra. O conjunto exato depende do mecanismo. | \w+ |
\s / \S | Corresponde a espaço em branco / não espaço. | \s+ |
\b / \B | Corresponde a um limite de palavra / uma posição que não é limite de palavra. | \bword\b |
\n, \r, \t | Corresponde a quebra de linha, retorno de carro ou tabulação. | \r?\n |
\xNN | Corresponde a um caractere pela unidade de código hexadecimal de dois dígitos. | \x41 corresponde a A. |
\uNNNN | Corresponde a um caractere por uma unidade de código Unicode de quatro dígitos em mecanismos compatíveis. | \u00A9 corresponde a ©. |
\u{1F600}, \x{1F600} | Corresponde a um ponto de código acima de U+FFFF: o JavaScript escreve \u{...} com o sinalizador u, enquanto PCRE, Perl e Java escrevem \x{...} e o Python escreve \U0001F600. | \u{1F600} |
\p{Letter} | Corresponde a uma propriedade Unicode quando os escapes de propriedade estão disponíveis e ativados. | \p{Letter}+ |
O mecanismo do Go baseado em RE2 omite intencionalmente lookaround e referências inversas. O JavaScript exige modo Unicode para muitos escapes de propriedades Unicode. PCRE, .NET, Java, Python e Ruby também diferem em sintaxe de grupos, flags e regras de substituição.
Quando um padrão processar entradas não confiáveis ou muito grandes, evite quantificadores aninhados ambíguos, limite o tamanho da entrada e teste o pior caso para reduzir o risco de backtracking excessivo.
Quarenta construções em três colunas: a sintaxe que você digita, o que ela faz e um exemplo curto. As linhas cobrem os escapes, âncoras, quantificadores, classes de caracteres, grupos, asserções, flags e escapes Unicode comuns a JavaScript, PCRE, Python, Java, .NET, Go e Ruby, e indicam quais mecanismos recusam cada forma avançada.
A página não executa padrão nenhum: nada é compilado ou comparado aqui. A tabela vem junto com a página, o campo de busca apenas oculta linhas no navegador e o que você digita não é enviado a lugar algum.
Escapes (\d, \w, \b, \xNN, \uNNNN, \p{Letter}), âncoras (^, $, \A, \z, \Z), quantificadores greedy, lazy e possessivos, listas entre colchetes e classes POSIX, grupos de captura e sem captura, três formas de grupo nomeado, referências inversas, lookahead e lookbehind, flags inline e escapes de ponto de código acima de U+FFFF.
Os exemplos são trechos, não programas completos: \d++ e (?>a|ab)c mostram a construção em contexto, e as três linhas que terminam em frase — \. corresponde a um ponto literal., \x41 corresponde a A., \u00A9 corresponde a ©. — são lidas como em um teste de padrão.
O mecanismo RE2 do Go não tem lookaround nem referências inversas; JavaScript não tem grupos atômicos nem quantificadores possessivos e exige a flag u nos escapes \u{...}; e uma classe POSIX como [[:alpha:]] funciona em PCRE, Java, Ruby e mecanismos estilo grep, mas não em JavaScript nem em Python.
Python 3.11 e versões posteriores aceitam grupos atômicos e quantificadores possessivos, que PCRE, Perl e Java já tinham. Grupos nomeados se escrevem (?P<name>...) em Python e no RE2 e (?'name'...) em .NET, PCRE, Perl e Ruby; a referência inversa nomeada é \k<name>, exceto em Python, que escreve (?P=name).
É uma tabela de consulta, não um testador: não compila padrões, não compara nada com o seu texto e não gera código. As abas acima trazem o resto da família: o Regex Tester executa um padrão, o Regex Code Generator escreve o código em sete linguagens e o Common Regex Patterns reúne padrões prontos.
A tabela é HTML simples e continua legível com o JavaScript desativado; apenas o filtro, a contagem e os botões de copiar dependem do script. A busca compara o texto da página, então uma consulta como \d+ é lida como os três caracteres que ela contém, não como um padrão.