Convertisseur motif glob vers regex
Collez un motif glob et obtenez l'expression régulière correspondante : *.js devient ^.*\.js$, avec le point échappé pour ne correspondre qu'à un vrai point. Les crochets, points d'interrogation et barres obliques inverses sont aussi traduits. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Motif
- *.js
- Expression régulière
- ^.*\.js$
- Corps de l'expression régulière
- .*\.js
- Nombre de jokers
- 1
Les motifs glob du shell sont le langage quotidien des filtres de noms de fichiers : l'étoile pour toute suite de caractères, le point d'interrogation pour un seul caractère et les classes entre crochets pour un ensemble ou une plage. Les expressions régulières utilisent une syntaxe différente et plus dense, et les développeurs ont constamment besoin d'une traduction fidèle pour brancher un filtre d'interface, un banc de tests ou un fichier de configuration qui n'accepte que la regex. Ce convertisseur de motif glob vers regex accepte un motif de style shell, le parcourt une seule fois caractère par caractère, associe chaque joker à sa contrepartie regex, échappe tout littéral qui serait autrement spécial dans une expression régulière et renvoie une chaîne regex stable plus un corps sans ancres lorsque vous devez intégrer le fragment. Le mode chemin optionnel empêche l'étoile et le point d'interrogation de traverser la barre oblique, afin que les règles par segment correspondent au comportement de find et de nombreux shells.
Comment les globs shell se mappent aux expressions régulières
Un glob shell est un langage de motifs compact conçu pour faire correspondre des noms de fichiers, non pour l'analyse complète de texte. Le joker étoile correspond à toute suite de caractères (y compris la suite vide) ; dans ce convertisseur le mappage par défaut est la construction regex point-étoile, tandis que le mode chemin mappe l'étoile vers une classe de caractères excluant la barre oblique suivie d'un quantificateur étoile, de sorte qu'une seule étoile ne peut pas avaler les séparateurs de répertoires.
Le point d'interrogation correspond à exactement un caractère ; le mode par défaut utilise un seul point et le mode chemin une classe d'un caractère non barre. Les expressions entre crochets telles que a-z ou abc deviennent la classe de caractères regex correspondante. La négation shell utilise un point d'exclamation juste après le crochet ouvrant, que cet outil réécrit en classe négée avec circonflexe pour que les moteurs qui ne connaissent que la négation par circonflexe fonctionnent encore.
Un circonflexe juste après le crochet ouvrant est aussi accepté comme négation. L'antislash devant un caractère force ce caractère à être traité comme littéral même s'il s'agit d'une étoile, d'un point d'interrogation ou d'un crochet ouvrant. Tout caractère ordinaire spécial en expressions régulières — point, plus, parenthèses, accolades, barre verticale, circonflexe, dollar et assimilés — est échappé pour qu'un fragment de nom comme report.v2 ne signifie pas par accident report suivi de n'importe quel caractère suivi de v2.
L'expansion d'accolades de la forme accolade a virgule b accolade est un prétraitement du shell, non une correspondance glob, donc les accolades restent des littéraux dans la regex de sortie plutôt que de devenir des groupes d'alternance.
Quand convertir un glob en regex
Les filtres produit côté frontend commencent souvent par des globs conviviaux (étoile pour tout suffixe, point d'interrogation pour un emplacement) alors que l'index de recherche ou la base de données n'accepte que des expressions régulières ; convertir en bordure garde le langage produit simple et le moteur de requêtes correct.
Les suites de tests et scripts CI qui acceptent des globs d'inclusion et d'exclusion peuvent compiler ces globs une fois en objets regex et les réutiliser sur des milliers de contrôles de chemins sans réimplémenter ad hoc les règles du shell. Les revues de sécurité et recherches de code doivent parfois montrer ce qu'un glob hérité signifie réellement en forme regex avant d'approuver un changement de règle. Une validation échouée ne consomme pas le solde.
Cas d’usage
Filtres UI en glob, moteurs qui exigent la regex
Acceptez des motifs orientés utilisateur comme *.png ou report-????.csv et compilez-les en regex ancrées pour une correspondance côté client ou serveur.
Documentation et enseignement des jokers
Montrez côte à côte ce qu'un glob shell devient en expression régulière afin que les apprenants voient clairement échappements, classes et ancres.
Questions fréquentes
Quels jokers sont pris en charge ?
Étoile (*) pour toute suite, point d'interrogation (?) pour un caractère, classes entre crochets ([abc], [a-z], [! x] ou [^x] pour la négation) et échappements antislash du caractère suivant. L'expansion d'accolades n'est pas traitée comme joker.
Pourquoi le point d'un nom de fichier est-il échappé ?
Dans une expression régulière, un point seul signifie n'importe quel caractère : report.v2 correspondrait donc aussi à report suivi d'un caractère quelconque puis v2. Chaque caractère spécial est échappé pour que les parties littérales le restent.
Que change le mode chemins ?
Avec le mode chemins activé, l'étoile et le point d'interrogation s'arrêtent à la barre oblique : une seule étoile ne peut donc pas avaler les séparateurs de dossiers, comme avec find et de nombreux shells. Sans lui, les deux acceptent tout caractère.
Les accolades comme {a,b} sont-elles développées ?
Non. Les accolades relèvent d'un prétraitement du shell, pas du motif glob : elles restent des caractères littéraux dans l'expression régulière au lieu de devenir des alternatives.
Peut-on obtenir l'expression sans les ancres de début et de fin ?
Oui. Par défaut le résultat est encadré par ^ et $ pour couvrir tout le texte, mais vous pouvez aussi prendre le seul corps, prêt à être inséré dans un motif plus large.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
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)Exemple de requête
{
"pattern": "*.js"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.glob_to_regex",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Champs d'entrée, forme de la réponse et modes d'échec
Le booléen optionnel anchored (défaut true) entoure l'expression terminée de circonflexe et de dollar pour que la regex corresponde à toute la chaîne candidate ; mettez anchored à false lorsque vous n'avez besoin que du corps pour une composition dans un motif plus large. Les classes de caractères peuvent inclure un crochet fermant littéral comme premier membre après l'ouvreur ou le marqueur de négation, selon la pratique POSIX et shell courante. Un antislash final isolé est traité comme antislash littéral et non comme échappement incomplet. Envoyez un corps JSON avec le champ chaîne obligatoire pattern (alias glob, pattern_glob, wildcard) contenant le glob shell que vous souhaitez traduire. Le booléen optionnel path_mode (défaut false) active l'étoile et le point d'interrogation sensibles à la barre. En cas de succès la réponse renvoie pattern, path_mode et anchored ; renvoie regex (l'expression complète que vous pouvez donner à un moteur regex) ; renvoie regex_body (la même traduction sans les ancres externes) ; signale wildcard_count pour indiquer combien de jetons étoile, point d'interrogation ou classe ont été trouvés ; et inclut une courte chaîne formula résumant le mappage en vigueur. Un pattern vide, non chaîne, des motifs de plus de deux mille quarante-huit caractères, des classes de caractères non fermées, des classes vides et des plages inversées comme z-a échouent avec invalid_input et ne sont pas facturés.
Où une API glob vers regex trouve sa place
Comme l'implémentation est parse pure de tier A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant. Gardez les motifs courts, figez les chaînes regex renvoyées dans les tests, et vous obtenez des traductions reproductibles pour widgets, SDK et workers de bord sans monter un shell ni une bibliothèque fnmatch spécifique à un langage.
Cas d'intégration
Règles d'inclusion et d'exclusion en CI
Traduisez les globs du projet en regex path_mode pour que les lanceurs de tests et linters appliquent les mêmes règles par segment sans reparser les globs à chaque fichier.
Questions techniques
Comment convertir un motif glob en expression régulière ?
Envoyez en POST un corps JSON avec pattern égal à votre glob shell (par exemple *.js). L'API renvoie regex (ancrée par défaut) et regex_body. Mettez path_mode à true si * et ? ne doivent pas correspondre à la barre.
Que change path_mode ?
Lorsque path_mode est true, * devient [^/]* et ? devient [^/], de sorte qu'aucun joker ne traverse un séparateur de répertoire. Lorsque false (défaut), ils peuvent correspondre à tout caractère y compris la barre.
Pourquoi ai-je reçu invalid_input ?
Causes fréquentes : pattern manquant ou vide, classe '[...]' non fermée, classe vide, plage inversée entre crochets, pattern non chaîne, ou motif de plus de 2048 caractères. Ces échecs ne sont pas facturés.
Combien coûte le convertisseur de motif glob vers regex ?
L'outil navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.