RegexSmith
Expressões regulares explicadas e testadas onde são escritas. Passe o mouse sobre um padrão em C# e veja uma linha por parte em palavras simples, os grupos em cores e strings que correspondem; veja sublinhados os padrões que podem travar; experimente seus próprios exemplos no Testador do RegexSmith e grave o padrão de volta com um clique.
Gratuito · Visual Studio 2022 e 2026 · 14 idiomas de interface · sem telemetria
Por que o RegexSmith
![Um cartão ao passar o mouse sobre um padrão [GeneratedRegex]: o padrão com os grupos coloridos, uma linha por parte em palavras simples, exemplos que correspondem e um que não, e o status ✓ seguro](../../regexsmith/marketplace/hero.png)
Palavras simples, não uma aula de sintaxe
^(?<year>\d{4})-(?<id>\d{1,5})$ vira “Início do texto”, “Exatamente 4 dígitos”, “De 1 a 5 dígitos” — uma linha por parte, aninhada sob o seu grupo, cada grupo com a sua cor.
Verificado pelo mecanismo real
Os exemplos do cartão e cada resultado do testador vêm do próprio mecanismo de regex do .NET, com as opções da chamada. O que você vê é o que o seu aplicativo vai fazer.
Padrões que podem travar
([a-z0-9]+\.?)+ parece inofensivo e pode congelar uma requisição com uma string longa que quase corresponde. O RegexSmith sublinha essas repetições e as corrige com Ctrl+.
Gratuito, sem pegadinhas
Sem assinatura, sem versão “pro”, sem coleta de dados, sem mensagens na janela Saída ou na inicialização. Padrões e exemplos ficam no seu computador. A única coisa que vamos pedir — depois que você o tiver usado por um tempo — é uma avaliação no Marketplace. Funciona no Visual Studio 2022 e 2026, x64 e ARM64.
Recursos
- O cartão ao passar o mouse sobre um padrão em C#: o padrão com os grupos coloridos, uma linha por parte em palavras simples, etiquetas coloridas dos grupos e um status — ✓ seguro, ⚠ pode travar ou ✕ inválido.
- Sublinhado dos grupos: uma linha fina na cor do grupo sob cada grupo de captura, direto no código; grupos aninhados ficam mais abaixo.
- Exemplos gerados a partir do padrão — duas strings que correspondem e uma que não — verificados pelo mecanismo real do .NET.
- RX001: um sublinhado ondulado sob repetições que podem levar tempo exponencial, com correções no Ctrl+. e uma prévia de antes/depois.
- O Testador do RegexSmith, encaixado ao lado de Localizar Resultados: seus exemplos com expectativas ✓/✗, correspondências e grupos destacados, uma tabela de grupos e uma aba Substituir.
- Aplicar ao código: o padrão editado volta para o mesmo tipo de literal de string, com as suas opções, como uma única ação de Desfazer.
- Copiar como teste de unidade para xUnit, NUnit ou MSTest — seus exemplos viram casos de teste.
O cartão ao passar o mouse
Passe o mouse sobre a string de um padrão e a dica de ferramenta normal do Visual Studio ganha um cartão do RegexSmith: o que o padrão significa, com o que ele corresponde e se é seguro.

Onde funciona
Em arquivos C#, sobre o padrão de:
new Regex("…"), com ou semRegexOptions;- os métodos estáticos
Regex.IsMatch,Match,Matches,Replace,SpliteCount; [GeneratedRegex("…")];[RegularExpression("…")]— o cartão então diz Validação: o valor inteiro deve corresponder;- uma
const stringno mesmo arquivo usada por um deles.
Strings normais, literais (@"…") e brutas ("""…""") são lidas como o compilador as lê, então "\\d" e @"\d" são o mesmo padrão.
O que o cartão mostra
| Na tela | Significado |
|---|---|
| RegexSmith · Expressão regular do .NET · IgnoreCase | O tipo de padrão e as opções lidas da chamada, e o status à direita. |
| O padrão | Os parênteses de cada grupo de captura na sua cor, o conteúdo sublinhado nessa cor; o texto mantém a cor do tema, para continuar legível. |
| Exatamente 4 dígitos | Uma linha por parte em palavras simples — “Início do texto”, “Um dos textos: “jpg”, “png””, “De 1 a 5 dígitos” — aninhada sob o seu grupo. Um padrão muito longo termina com … mais N. |
| Etiquetas dos grupos | O nome ou número de cada grupo em uma etiqueta na sua cor — as mesmas cores do padrão e do sublinhado no código. |
| ✓ Corresponde: … ✗ Não corresponde: … | Duas strings que correspondem e uma que não, geradas a partir do padrão e verificadas pelo mecanismo real do .NET. Os espaços aparecem como pontos claros. |
| ▶ Testar padrão… | Abre o padrão no Testador do RegexSmith. |
O status
| Na tela | Significado |
|---|---|
| ✓ seguro | O .NET aceita o padrão e nada nele pode causar backtracking catastrófico. |
| ⚠ pode travar | Uma repetição pode levar tempo exponencial com uma entrada longa que quase corresponde; o cartão diz de que tipo (RX001) e que o Ctrl+. oferece correções. |
| ✕ inválido | O mecanismo rejeita o padrão; o cartão mostra a mensagem dele: O .NET não aceita este padrão: … |
“Seguro” significa só isto: o .NET aceita o padrão e ele não pode travar. Não significa que ele corresponda ao que você pretende — para isso servem os exemplos e o testador.
Sublinhado dos grupos
Cada grupo de captura de um padrão ganha uma linha fina na sua cor direto no código — a mesma cor do cartão. Um padrão longo com cinco grupos pode ser lido de relance: qual parte é o ano, qual é o id.
Um grupo dentro de outro fica um pouco mais abaixo, para que as duas linhas continuem visíveis. As cores seguem em ordem: salmão, verde, azul, violeta, âmbar, verde-azulado — e de novo.
O sublinhado pode ser desativado nas configurações: Sublinhar grupos de captura.
Padrões que podem travar
Alguns padrões levam tempo exponencial com uma string longa que quase corresponde — o jeito clássico de uma regex congelar uma requisição web. O RegexSmith os encontra pela forma e coloca um sublinhado ondulado de aviso sob a repetição; passe o mouse sobre ele para ver o motivo.
![Um sublinhado ondulado RX001 sob ([a-z0-9]+\.?)+ com o menu Ctrl+. aberto e uma prévia da correção: o padrão antigo riscado, o novo com um grupo atômico](../../regexsmith/marketplace/backtracking.png)
O que é sublinhado (RX001)
- Repetição aninhada:
(a+)+,([a-z0-9]+\.?)+— uma sequência dos mesmos caracteres pode ser dividida entre a repetição interna e a externa de muitíssimas maneiras. - Repetição de alternativas que correspondem aos mesmos caracteres:
(\w|\d)+— um dígito pode ser pego por qualquer um dos ramos, então cada dígito dobra o trabalho.
Não dentro de grupos atômicos ou lookarounds, e nunca com RegexOptions.NonBacktracking — ali isso não pode acontecer.
Correções no Ctrl+.
Coloque o cursor sobre o sublinhado ondulado e pressione Ctrl+. — cada correção mostra uma prévia: o padrão antes (riscado) e depois.
| Correção | O que faz |
|---|---|
| Tornar atômica a repetição interna: (?>…) | Envolve a repetição interna em (?>…). As mesmas cadeias correspondem; a repetição não pode mais ser dividida de muitas formas. |
| Usar RegexOptions.NonBacktracking (.NET 7+) | Adiciona a opção à chamada. Tempo linear com qualquer entrada; requer .NET 7 ou posterior. Oferecida só quando o padrão permite — sem referências inversas, lookarounds, grupos atômicos ou de balanceamento, condicionais. |
| Testar este padrão no RegexSmith | Abre o padrão no testador — oferecida sobre qualquer padrão, não só sobre um arriscado. |
O RX001 pode ser desativado nas configurações (Dicas no editor) ou com Não mostrar este tipo de dica na dica de ferramenta; as correções do Ctrl+. continuam.
O testador
O Testador do RegexSmith abre encaixado ao lado de Localizar Resultados. O padrão vem do código e continua vinculado a ele: experimente-o com seus próprios exemplos, altere-o e grave-o de volta.

Como abrir
- ▶ Testar padrão… no cartão ao passar o mouse;
- Ctrl+. sobre um padrão › Testar este padrão no RegexSmith;
- clique com o botão direito em um arquivo C# › Testar padrão de expressão regular;
- Exibir › Outras Janelas › Testador do RegexSmith — sem vínculo com o código: um lugar para experimentar um padrão.
O padrão e as suas opções
No topo, o arquivo e a linha do padrão — clique para ir até lá. Abaixo, a caixa do padrão, a linha de status (✓ seguro, ⚠ pode travar ou o erro do mecanismo, e depois N de M conforme esperado · ms) e os botões de opções: IgnoreCase, Multiline, Singleline, IgnorePatternWhitespace, ExplicitCapture, RightToLeft, CultureInvariant. Qualquer alteração executa tudo de novo na hora.
Exemplos e expectativas
Na primeira vez, os exemplos do cartão já estão lá: dois que devem corresponder e um que não deve. Digite um novo em Adicione um exemplo e pressione Enter…; clique em um exemplo para editá-lo, ✕ o remove. A marca antes de cada exemplo diz o que ele deve fazer — clique nela para mudar:
| Na tela | Significado |
|---|---|
| ✓ | deve corresponder |
| ✗ | não deve corresponder |
| – | sem expectativa, apenas mostrar |
Um exemplo que faz o contrário fica vermelho — ✗ corresponde ou ✗ não corresponde — e assim os exemplos viram uma pequena especificação do padrão. As correspondências ficam coloridas, os grupos sublinhados nas suas cores e os espaços aparecem como pontos. Uma execução que leva mais de 1 segundo é interrompida com ⏱ lento demais.
Grupos do exemplo selecionado lista cada correspondência do exemplo selecionado: a correspondência inteira e depois cada grupo com o seu valor e posição (não capturado quando ele não participou).
Substituir
A aba Substituir adiciona uma caixa de substituição — $1, ${name}, $$ para um $ — e mostra o resultado de cada exemplo, como o Regex.Replace faria.
Copiar, reverter, aplicar
Copiar como teste de unidade coloca na área de transferência um teste com os seus exemplos, para xUnit, NUnit ou MSTest — a especificação vai para o projeto de testes.
Reverter volta ao padrão e às opções do código; os exemplos permanecem.
Aplicar ao código grava o padrão de volta como o mesmo tipo de literal que era (normal, literal ou bruto) junto com as opções — um Desfazer o reverte. Se esse código mudou depois que o testador o abriu, nada é gravado: abra o testador a partir do padrão de novo.
Os exemplos são lembrados por padrão e por solução em %LocalAppData%\RegexSmith\samples, então na próxima vez eles já estão lá. Nada vai para o repositório.
Configurações
Ferramentas › Opções › SmithWorks › RegexSmith. Cada opção tem uma breve descrição do que faz.
| Opção | Padrão |
|---|---|
| Explicar padrões ao passar o mouse | ativado |
| Sublinhar grupos de captura | ativado |
| RX001 Retrocesso catastrófico | ativado |
| Pedir uma avaliação no Marketplace | ativado |
Na parte de baixo: Restaurar padrões, Documentação, Avaliar no Marketplace e Enviar comentários.
As configurações ficam em %LocalAppData%\RegexSmith.

Perguntas frequentes
O RegexSmith envia algum dado?
Não. Os padrões são lidos do documento aberto e executados no seu computador; os exemplos ficam em %LocalAppData%\RegexSmith. Sem requisições de rede, sem telemetria.
O cartão diz “✓ seguro”. O padrão está certo?
Não necessariamente. “Seguro” significa que o .NET aceita o padrão e nenhuma repetição nele pode causar backtracking catastrófico. Se ele corresponde ao que você pretende, quem mostra são os exemplos: marque-os com ✓ ou ✗ no testador.
Por que não aparece cartão sobre o meu padrão?
O cartão aparece sobre um literal de string que o RegexSmith sabe que é um padrão: o argumento de new Regex, de um método estático de Regex, de [GeneratedRegex] ou de [RegularExpression], ou uma constante do mesmo arquivo usada ali. Um padrão montado em tempo de execução (concatenado, lido das configurações) não pode ser lido. Verifique também Explicar padrões ao passar o mouse nas configurações.
Qual mecanismo de regex é usado?
O mecanismo de regex do .NET em que o próprio Visual Studio roda, com as opções da chamada. RegexOptions.NonBacktracking (.NET 7+) também é lido da chamada; os exemplos então rodam no mecanismo normal, e as mesmas strings correspondem de qualquer forma.
Aplicar ao código não fez nada.
O código do padrão mudou depois que o testador o abriu, então o RegexSmith não grava em um lugar que talvez não contenha mais o padrão — o testador avisa isso abaixo dos botões. Abra o testador a partir do padrão de novo. Onde o código não tem lugar para opções ([RegularExpression] não aceita nenhuma), o padrão é gravado e as opções não.
Funciona em VB.NET, JavaScript ou TypeScript?
Não na 1.0: só C#. Outras linguagens usam outros mecanismos; peça no repositório Feedback se precisar de alguma.
Onde relato um problema ou sugiro um recurso?
Abra uma issue no repositório Feedback no GitHub — há formulários para bugs e ideias (troque nomes privados). Você também pode usar a aba Q&A no Marketplace.
Histórico de alterações
1.0.1
- As dicas no editor têm sua própria lista na página de opções, e um link na dica de ferramenta desativa um tipo de dica onde você o vê.
1.0.0
- Primeira versão: o cartão ao passar o mouse com explicação em linguagem simples, grupos coloridos, exemplos verificados pelo mecanismo do .NET e um status; sublinhado dos grupos no código; RX001 para padrões que podem travar, com correções por grupo atômico e NonBacktracking no Ctrl+.; o Testador do RegexSmith com expectativas, grupos, Substituir, Copiar como teste de unidade e Aplicar ao código; um pedido único de avaliação.