Ir para o conteúdo
Totalmente local

Regex a partir de exemplos

Converta strings de exemplo numa expressão regular e veja quais correspondências encontra.

Entrada
Exemplos que o padrão NÃO deve corresponder
Saída

Regex a partir de exemplos

Cole um punhado de strings que o padrão deve corresponder — uma por linha — e esta ferramenta infere uma expressão regular que captura a forma que partilham. Sob o padrão gerado, lista cada exemplo com uma marca de verificação, para que possa ver de relance se o resultado cobre efetivamente o que colou.

O nível de generalização controla como o resultado é literal. "Caracteres exatos" mantém cada carácter como está e apenas combina exemplos de formas diferentes com alternância. "Classes de caracteres" substitui dígitos, letras e espaços por \d, \p{Lu}/\p{Ll} e \s, mantendo as contagens de repetição exatas dos seus exemplos. "Quantificadores flexíveis" vai mais longe e transforma esses blocos em correspondências um-ou-mais, o que generaliza melhor mas também corresponde a mais do que as suas amostras. A ancoragem adiciona ^ e $ de modo que toda a string tenha de corresponder em vez de apenas uma substring, a sensibilidade a maiúsculas controla se a capitalização importa, e grupos nomeados envolvem as partes variáveis do padrão para que possa extraí-las por nome mais tarde. A opção de dialeto ajusta como os grupos nomeados são escritos para JavaScript, PCRE ou Python, uma vez que os três não concordam nessa sintaxe.

Adicione strings que o padrão NÃO deve corresponder no segundo campo, e a ferramenta verifica o padrão gerado contra elas também — qualquer exemplo negativo que ainda corresponda é sinalizado, que é a forma mais rápida de detetar um padrão demasiado amplo. Ative a explicação para obter o padrão dividido nas suas peças individuais com uma descrição em linguagem clara do que cada um faz.

Tudo é executado localmente no seu navegador: os exemplos que cola, os exemplos negativos e o padrão gerado nunca saem do seu dispositivo. Copie o resultado, descarregue-o como ficheiro .txt, ou envie a saída de volta para a entrada para a refinar com mais exemplos.

FAQ

A regex gerada sempre corresponde a todos os exemplos que colei?
Sim — o correspondência é construída diretamente a partir dos seus exemplos, portanto é concebida para corresponder a todos eles sob o nível de rigor que escolheu. Se os seus exemplos tiverem formas genuinamente diferentes, a ferramenta recorre a corresponder a qualquer uma das formas distintas.
O que "classes de caracteres" realmente muda?
Substitui blocos de dígitos, letras e espaços pela sua classe de regex (\d, \p{Lu}, \p{Ll}, \s) em vez dos caracteres literais, mantendo os comprimentos exatos vistos nos seus exemplos — por isso "AB12" torna-se \p{Lu}{2}\d{2}, não um literal "AB12".
Por que o padrão também correspondeu a um dos meus exemplos negativos?
Uma correspondência negativa geralmente significa que a generalização é mais ampla do que a sua intenção — tente um nível mais rigoroso, ative a ancoragem, ou adicione um exemplo negativo mais específico de modo a que a linha assinalada mostre exatamente o que escapou.
O padrão funcionará exatamente da mesma forma em Python ou PCRE?
As classes de caracteres e quantificadores são partilhados em dialetos, mas a sintaxe de grupo nomeado difere — a opção de dialeto apenas ajusta como esses grupos são apresentados (JavaScript usa (?<name>…), PCRE e Python tradicionalmente usam (?P<name>…)); teste sempre o resultado contra o seu motor real.
Os meus strings de exemplo são carregados em algum lugar?
Não. O padrão é gerado inteiramente no seu navegador — os seus exemplos e a regex gerada nunca saem do seu dispositivo.