2014-05-16 9 views
29

Ich habe Situationen erlebt, in denen nur Glob-Stil-Muster unterstützt werden und volle Unterstützung für reguläre Ausdrücke nicht vorhanden ist, zB redis-Schlüssel. Ich würde gerne den Unterschied zwischen den beiden wissen. Ich frage mich auch, ob Regex-Matching-Algorithmus viel härter ist als Glob-Style-Muster, dass manche Software Regex überhaupt nicht unterstützt?Was sind die Unterschiede zwischen glob-style Muster und regulärem Ausdruck?

+1

Es ist in der Regel auf der Grundlage der erwarteten Nutzung, nicht die Umsetzung. Häufig ist die volle Leistung und Flexibilität regulärer Ausdrücke nicht erforderlich, und ein einfacher Mustervergleich ist für die Benutzer einfacher zu verstehen. – Barmar

+1

Auch wenn Sie Dateinamen bearbeiten, ist es wirklich unpraktisch, bei der Verwendung von regexp immer '. – Barmar

+1

Googling "Glob vs Regex" bringt eine Reihe von Ressourcen, hast du das versucht? – tripleee

Antwort

19

Traditionelle Glob-Wildcards unterstützen einen sehr engen Satz von Metazeichen - * ist "alles", ? ist ein beliebiges einzelnes Zeichen; Bourne Shell unterstützt auch [a-z123] für ein einzelnes Zeichen aus einer Reihe von Alternativen und [!x-z789] mit Ausnahme der aufgeführten.

Regex ist offensichtlich viel reicher, unterstützt Wiederholungen und (in ERE) Alternation und spezifische Wiederholungszahlen. Perl-Regex erweitert den Formalismus bis zu dem Punkt, wo mehrere Bücher geschrieben wurden, und mehr wird sein.

Grundlegende Regex ist nicht viel schwieriger zu programmieren als glob Wildcards, und heutzutage würde ein kompetenter Programmierer in jedem Fall sowieso eine Verbindung zu einer vorhandenen Bibliothek herstellen.

Viele einfachere Systeme wollen ihre Benutzer nicht mit der Komplexität des Lernens von regulären Ausdrücken belasten - selbst einfache Wildcards sind eine Herausforderung, die Sie Ihrem Durchschnittsverkäufer erklären müssen, der keine Vollzeitstelle ist Computerbenutzer.

+0

Ich erinnere mich vage an Anekdoten großer Softwarefirmen, die dachten, selbst Entwickler würden Regex nicht wollen oder verstehen (und dann wurden sie mystifiziert, als es eine breite und klar artikulierte Nachfrage gab, also setzten sie sie in die nächste Version). – tripleee

0

Reguläre Ausdrücke werden in Befehlen/Funktionen für die Mustererkennung in Text verwendet. Zum Beispiel im Musterparameter von grep oder in Programmiersprachen.

Globbing wird von Shells verwendet, um Datei- und Verzeichnisnamen mithilfe von Platzhaltern abzugleichen. Die Fähigkeiten des Globbings hängen von der Shell ab. Bash zum Beispiel unterstützt Wildcards wie:

Weitere Informationen here gefunden werden können