Referência de sintaxe regex

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
SintaxeFunçãoExemplo
\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, xSinalizadores 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|yCorresponde à 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})
\1Corresponde 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 / \DCorresponde a um dígito / não dígito. O comportamento Unicode depende do mecanismo.\d+
\w / \WCorresponde a um caractere de palavra / não pertencente a palavra. O conjunto exato depende do mecanismo.\w+
\s / \SCorresponde a espaço em branco / não espaço.\s+
\b / \BCorresponde a um limite de palavra / uma posição que não é limite de palavra.\bword\b
\n, \r, \tCorresponde a quebra de linha, retorno de carro ou tabulação.\r?\n
\xNNCorresponde a um caractere pela unidade de código hexadecimal de dois dígitos.\x41 corresponde a A.
\uNNNNCorresponde 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}+

Como consultar uma construção regex

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.

  1. Digite no campo de busca acima da tabela para filtrar por sintaxe, significado ou exemplo: lookbehind mantém as duas linhas de lookbehind, \d mantém as dez linhas que o citam e Limpar traz as quarenta de volta.
  2. A busca lê texto simples, não um padrão, e ignora maiúsculas e minúsculas: lookbehind, Lookbehind e LOOKBEHIND retornam as mesmas linhas. Quando nada corresponde, aparece a mensagem de lista vazia em vez de uma tabela em branco.
  3. Leia a linha da esquerda para a direita: a primeira coluna é o que se digita dentro de um padrão, a segunda diz o que faz e a terceira mostra um exemplo curto.
  4. Use o botão de copiar da primeira célula para levar esse token à área de transferência; o valor copiado é só o token, por exemplo *+, ++, ?+.
  5. Confira a nota de mecanismo antes de usar uma construção avançada: as linhas de quantificadores possessivos, grupos atômicos, classes POSIX, \A \z \Z, grupos nomeados e \u{...} indicam quais mecanismos aceitam cada uma.

O que a tabela cobre

O que as quarenta linhas cobrem

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.

Onde os mecanismos divergem

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).

O que a página não faz

É 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.

Ferramentas recentes: