Testador de regex
Digite um padrão e um texto para testá-lo, e cada correspondência é destacada enquanto você digita.
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)
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.