Conversor de padrão glob para regex
Cole um padrão glob e receba a expressão regular correspondente: *.js vira ^.*\.js$, com o ponto escapado para casar só com um ponto de verdade. Colchetes, pontos de interrogação e barras invertidas também são traduzidos. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Padrão
- *.js
- Expressão regular
- ^.*\.js$
- Corpo da expressão regular
- .*\.js
- Quantidade de curingas
- 1
Os padrões glob de shell são a linguagem cotidiana dos filtros de nomes de arquivo: o asterisco para qualquer sequência de caracteres, a interrogação para um único caractere e as classes entre colchetes para um conjunto ou intervalo. As expressões regulares usam uma sintaxe diferente e mais densa, e os desenvolvedores precisam com frequência de uma tradução fiel ao conectar um filtro de interface, um harness de testes ou um arquivo de configuração que só aceita regex. Este conversor de padrão glob para regex aceita um padrão no estilo shell, percorre-o uma única vez caractere a caractere, mapeia cada curinga para a contraparte regex, escapa todo literal que de outro modo seria especial em uma expressão regular e devolve uma string regex estável mais um corpo sem âncoras quando você precisa embutir o fragmento. O modo de caminho opcional impede que asterisco e interrogação cruzem a barra, de forma que as regras por segmento coincidem com o comportamento do find e de muitos shells.
Como globs de shell se mapeiam para expressões regulares
Um glob de shell é uma linguagem compacta de padrões pensada para casar nomes de arquivo, não para análise completa de texto. O curinga asterisco casa qualquer sequência de caracteres (incluindo a sequência vazia); neste conversor o mapeamento padrão é a construção regex ponto-asterisco, enquanto o modo de caminho mapeia o asterisco para uma classe de caracteres que exclui a barra seguida de um quantificador asterisco, de modo que um único asterisco não engole separadores de diretório.
A interrogação casa exatamente um caractere; o modo padrão usa um único ponto e o modo de caminho usa uma classe de um caractere que não é barra. Expressões entre colchetes como a-z ou abc tornam-se a classe de caracteres regex correspondente. A negação no shell usa ponto de exclamação logo após o colchete de abertura, e esta ferramenta reescreve isso como classe negada com circunflexo para que motores que só conhecem negação com circunflexo continuem funcionando.
Um circunflexo logo após o colchete de abertura também é aceito como negação. A barra invertida antes de um caractere força esse caractere a ser tratado como literal mesmo quando é asterisco, interrogação ou colchete de abertura. Todo caractere comum especial em expressões regulares — ponto, mais, parênteses, chaves, barra vertical, circunflexo, cifrão e afins — é escapado para que um fragmento de nome como report.v2 não signifique acidentalmente report seguido de qualquer caractere seguido de v2.
A expansão de chaves na forma chave a vírgula b chave é pré-processamento do shell, não casamento glob, portanto as chaves permanecem literais na regex de saída em vez de se tornarem grupos de alternância.
Quando vale converter um glob em regex
Filtros de produto no frontend costumam começar como globs amigáveis (asterisco para qualquer sufixo, interrogação para um placeholder) enquanto o índice de busca ou o banco de dados só aceita expressões regulares; converter na borda mantém a linguagem do produto simples e o motor de consulta correto. Suites de testes e scripts de CI que aceitam globs de inclusão e exclusão podem compilar esses globs uma vez em objetos regex e reutilizá-los em milhares de verificações de caminho sem reimplementar ad hoc as regras do shell.
Fluxos de revisão de segurança e busca em código às vezes precisam mostrar o que um glob legado realmente significa em forma regex antes de aprovar uma mudança de regra. Validação falha não consome saldo. Mantenha os padrões curtos, fixe as strings regex devolvidas nos testes e você obtém traduções reproduzíveis para widgets, SDKs e workers de borda sem levantar um shell ou uma biblioteca fnmatch específica de linguagem por conta própria.
Casos de uso
Filtros de UI em glob, motores que exigem regex
Aceite padrões voltados ao usuário como *.png ou report-????.csv e compile-os em regexes ancoradas para casamento no cliente ou no servidor.
Documentação e ensino de curingas
Mostre lado a lado o que um glob de shell se torna como expressão regular para que aprendizes vejam escapes, classes e âncoras com clareza.
Perguntas frequentes
Quais curingas são suportados?
Asterisco (*) para qualquer sequência, interrogação (?) para um caractere, classes entre colchetes ([abc], [a-z], [! x] ou [^x] para negação) e escapes com barra invertida do próximo caractere. Expansão de chaves não é tratada como curinga.
Por que o ponto do nome do arquivo é escapado?
Numa expressão regular, um ponto solto significa qualquer caractere, então report.v2 casaria também com report seguido de qualquer caractere e v2. Todo caractere especial é escapado para que as partes literais continuem literais.
O que muda no modo de caminhos?
Com o modo de caminhos ligado, o asterisco e o ponto de interrogação param na barra, então um único asterisco não engole os separadores de pastas, como no find e em muitos shells. Sem ele, os dois aceitam qualquer caractere.
Chaves como {a,b} são expandidas?
Não. As chaves são um pré-processamento do shell, não parte do padrão glob, por isso ficam como caracteres literais na expressão regular em vez de virar alternativas.
Posso obter a expressão sem as âncoras de início e fim?
Sim. Por padrão o resultado vem entre ^ e $ para casar com o texto inteiro, mas você também pode pegar só o corpo, pronto para encaixar dentro de um padrão maior.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/glob-to-regex \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pattern":"*.js"}'const res = await fetch("https://api.kit.forhosting.com/dev/glob-to-regex", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pattern": "*.js"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/glob-to-regex",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pattern": "*.js"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/glob-to-regex", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pattern":"*.js"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pattern":"*.js"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/glob-to-regex", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"pattern": "*.js"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.glob_to_regex",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Campos de entrada, formato da resposta e modos de falha
O booleano opcional anchored (padrão true) envolve a expressão final com circunflexo e cifrão para que a regex case a string candidata inteira; defina anchored como false quando você só precisa do corpo para compor dentro de um padrão maior. Classes de caracteres podem incluir um colchete de fechamento literal como primeiro membro após o abridor ou o marcador de negação, conforme a prática POSIX e de shell comum. Uma barra invertida final isolada é tratada como barra invertida literal e não como escape incompleto. Envie um corpo JSON com o campo de string obrigatório pattern (aliases glob, pattern_glob, wildcard) contendo o glob de shell que você deseja traduzir. O booleano opcional path_mode (padrão false) ativa asterisco e interrogação conscientes da barra. Em caso de sucesso a resposta ecoa pattern, path_mode e anchored; devolve regex (a expressão completa que você pode alimentar a um motor regex); devolve regex_body (a mesma tradução sem as âncoras externas); informa wildcard_count para você ver quantos tokens de asterisco, interrogação ou classe foram encontrados; e inclui uma string formula curta que resume o mapeamento em vigor. Pattern vazio, que não seja string, padrões com mais de dois mil e quarenta e oito caracteres, classes de caracteres sem fechar, classes vazias e intervalos invertidos como z-a falham com invalid_input e não são cobrados.
Onde uma API de glob para regex ganha espaço
Como a implementação é parse puro de tier A, cada chamada bem-sucedida custa o preço base publicado US$ 0,002 sem tokens de modelo e sem rede de saída.
Casos de integração
Regras de inclusão e exclusão em CI
Traduza os globs do projeto em regexes com path_mode para que runners de teste e linters apliquem as mesmas regras por segmento sem reanalisar globs em cada arquivo.
Perguntas técnicas
Como converto um padrão glob em uma expressão regular?
Faça POST de um corpo JSON com pattern igual ao seu glob de shell (por exemplo *.js). A API devolve regex (ancorada por padrão) e regex_body. Defina path_mode como true se * e ? não devem casar a barra.
O que o path_mode altera?
Quando path_mode é true, * vira [^/]* e ? vira [^/], de modo que nenhum curinga cruza um separador de diretório. Quando é false (padrão), podem casar qualquer caractere, inclusive a barra.
Por que recebi invalid_input?
Causas comuns: pattern ausente ou vazio, classe '[...]' sem fechar, classe vazia, intervalo invertido entre colchetes, pattern que não é string, ou padrão com mais de 2048 caracteres. Essas falhas não são cobradas.
Quanto custa o conversor de padrão glob para regex?
A ferramenta no navegador é gratuita. Requisições API usam saldo pré-pago do KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.