Pular para o conteúdo
Quaestio

Testador de regex

Digite um padrão e um texto para testá-lo, e cada correspondência é destacada enquanto você digita.

Flags

Exemplos

Use $1 ou $<name> para grupos, $& para a correspondência inteira e $$ para um cifrão.

Elementos comuns
.
qualquer caractere exceto quebra de linha
\d
um dígito de 0 a 9
\w
uma letra a–z, um dígito ou um sublinhado
\s
espaço, tabulação ou quebra de linha
\D \W \S
o contrário de \d, \w e \s
\b
limite entre um caractere de palavra e outro que não é
^
início do texto, ou da linha com m
$
fim do texto, ou da linha com m
[abc] [a-z]
um dos caracteres, ou um caractere do intervalo
[^abc]
nenhum dos caracteres
a|b
a ou b
(…)
grupo de captura
(?:…)
grupo sem captura
(?<name>…)
grupo nomeado
\1 \k<name>
o mesmo texto do grupo 1 ou do grupo chamado name
*
zero ou mais vezes
+
uma ou mais vezes
?
zero ou uma vez
{3} {2,5} {2,}
exatamente 3 vezes, de 2 a 5 vezes ou pelo menos 2 vezes
*? +? ??
o menor número de vezes possível
(?=…)
seguido de
(?!…)
não seguido de
(?<=…) (?<!…)
precedido de, não precedido de
\p{L}
uma letra de qualquer escrita (requer u ou v)
Incorporar

Incorpore esta ferramenta no seu site

Copie o código e cole onde a ferramenta deve aparecer, como num post de blog ou numa página escolar. É gratuito, o quadro não tem anúncios e a ferramenta calcula no navegador do visitante.

Como funciona

Uma expressão regular é um padrão que descreve texto. \d+ significa um ou mais dígitos, [a-z] uma letra de a a z e ^ o início do texto. O padrão é testado no texto da esquerda para a direita, e cada lugar onde ele se encaixa é uma correspondência.

O testador usa o motor do seu navegador, ou seja, a variante de expressões regulares definida no padrão ECMAScript para JavaScript. Ela difere de PCRE, Python e .NET em alguns pontos: não há, por exemplo, quantificadores possessivos nem grupos atômicos, e o lookbehind pode ter qualquer comprimento.

As flags mudam a forma como o padrão é lido. g encontra todas as correspondências em vez de só a primeira, i ignora a diferença entre maiúsculas e minúsculas, m faz ^ e $ valerem para cada linha e s permite que o ponto corresponda a quebras de linha. u lê o texto como caracteres Unicode em vez de unidades UTF-16, e v é uma versão mais rigorosa de u, do ECMAScript 2024, com operações de conjuntos nas classes de caracteres. y exige que cada correspondência comece exatamente onde a anterior terminou, e d registra as posições dos grupos.

Os parênteses capturam o que encontraram e são numerados pelo parêntese de abertura, a partir da esquerda. (?<name>…) dá um nome a um grupo, e (?:…) agrupa sem capturar. Na substituição, $1 representa o grupo 1, $<name> um grupo nomeado, $& a correspondência inteira e $$ um cifrão. Sem a flag g, só a primeira correspondência é substituída.

Alguns padrões levam um tempo enorme, como (a+)+$ aplicado a uma longa sequência de a seguida de outro caractere. O motor passa então a testar combinações cujo número cresce exponencialmente com o comprimento do texto, o chamado backtracking catastrófico. Aqui a busca roda em uma thread separada que é interrompida após dois segundos, para que a página não trave. Em um programa rodando em um servidor, o mesmo padrão pode virar um risco de segurança (ReDoS).

As posições são contadas em unidades UTF-16, como em JavaScript, então um emoji conta como dois. Uma correspondência vazia, como ^ ou \b, é marcada com uma linha fina. Seu texto nunca sai do seu navegador.

Fontes

Como as ferramentas são verificadas