2011-01-05 11 views
3

Ich suche nach einer Möglichkeit, alle möglichen Muster aus einer endlichen Regex (ohne Duplikate) aufzulisten. Ist eine Quelle verfügbar?Auflistung aller Muster, die eine Regex entspricht

+0

@Artha Irgendwelche Sprachpräferenz? – marcog

+0

Können Sie ein Beispiel für die Eingabe und erwartete Ausgabe geben? – Gumbo

+0

Meinst du alle möglichen Übereinstimmungen von einer Regex? –

Antwort

3

Obwohl es einige erweiterte Funktionen nicht abdeckt und seinen eigenen Anteil an anderen Vorbehalten hat, scheint Regexp::Genex in der Nähe zu sein, was Sie suchen.

Es gibt auch this thread of PerlMonks, die relevant genug ist (sowie zu erklären, wie Regexp :: Genex nicht für Sie tun könnte, und einige roll-yourself-Alternativen).

Ansonsten laut Jeffrey Friedl Mastering Regular Expressions, können Sie den/g Modifikator, gekoppelt mit der Erweiterung und eine pattern that will never match, ala ({CODE}?):

perl -E '$_ = 'Mastering Regular Expressions'; /(\p{L}*)(?{ say qq![$^N]! })(?!)/g;' 
+0

Regexp :: Genex funktioniert gut für mich. Danke – Artha

+0

Gibt es einen voll entwickelten Code - Regex :: Genex war Alpha und unterstützt nicht^$ \ G ... – Artha

+0

Nicht, dass ich weiß, leider - Vielleicht eine Kombination aus diesem Beispiel von Mastering Regular Expressions (wenn Sie wirklich, wirklich benötigt es, Sie könnten sogar $ & und Freunde verwenden, anstatt Gruppen zu erfassen .. Ich weiß nicht, wann $^{MATCH} innerhalb (? {CODE}) Blöcke arbeitet plus String :: Random könnte den Trick machen? – Hugmeir

0

A Haskell Programm basiert auf Perl Regexp::Genex kann on Github und on Hackage gefunden werden.

According to the author, wurde es von Regexp :: Genex inspiriert, aber "verwendet einen Random-Walk-Ansatz für Zeichenklassen, anstatt alle Möglichkeiten aufzuzählen."

Verwandte Themen