← Todas as ferramentas

Testador de Expressões Regulares

Crie, teste e depure expressões regulares ao vivo sobre seu próprio texto no navegador. Aprenda classes de caracteres, quantificadores, âncoras, grupos e flags.

Testador de Regex: monte e depure padrões contra o seu próprio texto

Uma expressão regular é uma minúscula linguagem para descrever o formato de um texto. Em vez de perguntar "esta palavra exata está aqui?", uma regex permite que você pergunte "existe uma string que se pareça com isto?". É isso que a torna poderosa para encontrar, validar, extrair e substituir texto em editores de código, arquivos de log, entradas de formulário e scripts. E também é o que a torna fácil de errar, porque um padrão que soa correto na sua cabeça pode, silenciosamente, casar demais, de menos ou nada.

É por isso que testar de forma interativa supera o chute. Quando você digita um padrão e observa as correspondências se acenderem por um texto de amostra real, recebe retorno imediato: vê o que foi capturado, o que escapou e qual grupo de captura pegou qual pedaço. Nosso Testador de Regex roda inteiramente no seu navegador. Seu padrão e seu texto de amostra nunca saem da página, então você pode colar linhas de log, e-mails ou dados de produção sem enviar nada para um servidor.

Filtro ciano brilhante capturando tokens dourados específicos de um fluxo de dados em movimento sobre fundo índigo escuro
Uma regex age como um filtro, selecionando apenas os tokens que casam com o seu padrão.

Os blocos de construção que vale conhecer

A maioria dos padrões do dia a dia é montada a partir de um pequeno conjunto de peças. Aprenda estas e você consegue ler a maior parte das regexes que encontrar por aí.

As classes de caracteres descrevem um conjunto de caracteres permitidos. [aeiou] casa com qualquer vogal única, [0-9] casa com um dígito e [a-zA-Z] casa com uma letra. Um circunflexo dentro dos colchetes nega o conjunto, então [^0-9] significa "qualquer caractere que não seja um dígito". Atalhos poupam digitação: \d é um dígito, \w é um caractere de palavra (letras, dígitos, sublinhado), \s é espaço em branco, e o ponto . casa com quase qualquer caractere único.

Os quantificadores dizem quantas vezes a peça anterior pode se repetir. * significa zero ou mais, + significa um ou mais, e ? significa zero ou um (opcional). Para contagens exatas, {3} significa exatamente três e {2,4} significa de dois a quatro. Assim, \d{4} casa com um ano de quatro dígitos e colou?r casa com as duas grafias.

As âncoras fixam um padrão a uma posição, e não a um caractere. ^ casa com o início do texto, $ casa com o fim, e \b marca uma fronteira de palavra. O padrão ^Error só casa com linhas que começam com "Error", que é exatamente o que você quer ao varrer logs.

Os grupos envolvem parte de um padrão entre parênteses, tanto para aplicar um quantificador a vários caracteres de uma vez quanto para capturar o texto casado e reutilizá-lo. Em (\d{4})-(\d{2})-(\d{2}) cada grupo captura um componente de data que você pode extrair depois. A alternância com a barra vertical age como um "ou": cat|dog|fish casa com qualquer uma das três palavras.

Padrões que você de fato vai usar

Algumas tarefas recorrentes cobrem a maior parte do trabalho real. Para capturar algo parecido com e-mail, [\w.+-]+@[\w-]+\.[\w.-]+ é um ponto de partida pragmático; a validação completa de e-mail conforme a especificação formal é notoriamente espinhosa, e um padrão frouxo costuma ser a escolha certa para destacar candidatos em vez de rejeitar usuários.

Para números, \d+ pega sequências de dígitos, enquanto -?\d+(\.\d+)? casa com negativos e decimais opcionais. Para aparar espaços em branco no início e no fim, case ^\s+|\s+$ e substitua por nada. Para encontrar palavras duplicadas, o padrão de retrorreferência \b(\w+)\s+\1\b casa com uma palavra seguida de si mesma, em que \1 remete ao primeiro grupo capturado.

Palavras selecionadas brilhando em dourado e destacadas dentro de um rio fluido de partículas ciano semelhantes a texto sobre azul-marinho escuro
O destaque ao vivo mostra exatamente quais trechos do seu texto um padrão casa.

As flags mudam o comportamento da correspondência

As flags são interruptores que modificam o padrão inteiro. A flag global (g) encontra todas as correspondências em vez de parar na primeira, que é o que você quer ao destacar todas as ocorrências. A flag insensível a maiúsculas (i) faz error casar com "Error" e "ERROR" igualmente. A flag multilinha (m) muda ^ e $ para que casem no início e no fim de cada linha, não apenas do texto inteiro, o que é essencial para trabalho com logs linha a linha. Outras flags úteis incluem s (dotall, que deixa o ponto casar com quebras de linha) e u para tratamento completo de Unicode.

Os dialetos diferem um pouco conforme a linguagem

Regex é uma família de dialetos, não um padrão único e fixo. JavaScript, Python, PCRE (PHP), Java, .NET, Go e Rust concordam na sintaxe central acima, mas divergem nas bordas: suporte a lookbehind, sintaxe de grupos nomeados ((?<name>...) versus (?P<name>...)), escapes de propriedade Unicode e quais flags existem variam todos. Um padrão que funciona em um motor pode precisar de um pequeno ajuste em outro, então compensa testar contra o dialeto com o qual você de fato trabalha. Quando você tiver um padrão afinado, nossas outras ferramentas para desenvolvedores e ferramentas de texto podem ajudar no trabalho ao redor de limpar, codificar e transformar os dados que você acabou de casar.

Perguntas frequentes

Meu texto é enviado a um servidor?

Não. O Testador de Regex roda inteiramente no seu navegador. Seu padrão e seu texto de amostra ficam no seu dispositivo e nunca são enviados, então é seguro colar dados sensíveis.

Qual dialeto de regex esta ferramenta usa?

Ela usa o motor de regex do JavaScript embutido no seu navegador. A sintaxe central corresponde ao que você conhece da maioria das linguagens, embora alguns recursos avançados difiram um pouco do PCRE, do Python ou do .NET.

Qual é a diferença entre correspondência gananciosa e preguiçosa?

Por padrão os quantificadores são gananciosos e pegam o máximo de texto possível. Adicionar um ponto de interrogação os torna preguiçosos, então pegam o mínimo possível. Por exemplo, o padrão ponto estrela é ganancioso, enquanto ponto estrela ponto de interrogação é preguiçoso.

Como faço para casar um caractere especial literal?

Escape-o com uma barra invertida. Para casar um ponto de verdade, escreva barra invertida ponto. O mesmo vale para outros metacaracteres, como parênteses, colchetes, o sinal de mais e o ponto de interrogação.

Por que meu padrão não casa com nada?

As causas comuns são uma flag global ausente, âncoras que fixam a correspondência na posição errada, um caractere especial não escapado ou quantificadores gananciosos ultrapassando o limite que você esperava. Teste pedaço por pedaço para achar o culpado.

Posso capturar partes da correspondência?

Sim. Envolva uma seção do padrão entre parênteses para criar um grupo de captura. Cada grupo é reportado separadamente, o que permite extrair campos como o ano, o mês e o dia de uma data.