web-dev-qa-db-fra.com

Quelles sont les différences entre le modèle de style glob et l'expression régulière?

J'ai rencontré des situations où seuls les modèles de style glob sont pris en charge et le support complet des expressions régulières n'est pas là, par exemple les clés redis. J'aimerais connaître la distinction entre les deux. Je me demande également si l'implémentation de l'algorithme de correspondance des expressions rationnelles est plus difficile par rapport au modèle de style global que certains logiciels ne prennent pas en charge l'expression régulière.

41
aamir

Les caractères génériques glob traditionnels prennent en charge un ensemble très restreint de métacaractères - * est "n'importe quoi", ? est un caractère unique arbitraire; Bourne Shell prend également en charge [a-z123] pour un seul caractère parmi un ensemble d'alternatives, et [!x-z789] n'importe qui sauf ceux énumérés.

Regex est évidemment beaucoup plus riche, supportant les répétitions, et (dans ERE) l'alternance et le nombre spécifique de répétitions. L'expression rationnelle de style Perl étend encore le formalisme au point où plusieurs livres ont été écrits, et d'autres le seront.

La regex de base n'est pas tout à fait plus difficile à programmer que les caractères génériques glob, et ces jours-ci, un programmeur compétent se connecterait à une bibliothèque existante dans les deux cas, de toute façon.

De nombreux systèmes plus simples ne veulent pas surcharger leurs utilisateurs de la complexité de l'apprentissage des expressions régulières - même les caractères génériques de base sont un défi à expliquer à votre vendeur moyen ^ W ^ W personne qui n'est pas un utilisateur d'ordinateur à temps plein.

26
tripleee

Les expressions régulières sont utilisées dans les commandes/fonctions pour la correspondance de motifs dans le texte. Par exemple dans le paramètre pattern de grep, ou dans les langages de programmation.

Les globes sont utilisés par les shells pour faire correspondre les noms de fichiers et de répertoires à l'aide de caractères génériques. Les capacités de globbing dépendent du Shell. Bash, par exemple, prend en charge les caractères génériques comme:

Plus d'informations peuvent être trouvées ici

3
Aamol