Nach meinem Verständnis unterstützt das java.regex
Paket keine benannten Gruppen ( http://www.regular-expressions.info/named.html ). Kann mich jemand auf eine Bibliothek eines Drittanbieters hinweisen, die dies tut?
Ich habe mir jregex angesehen, aber seine letzte Veröffentlichung war im Jahr 2002 und es hat bei mir nicht funktioniert (zugegebenermaßen habe ich es nur kurz versucht) unter java5.
Antworten:
( Update : August 2011 )
Wie Geofflane in seiner Antwort erwähnt , unterstützt Java 7 jetzt benannte Gruppen .
tchrist weist in dem Kommentar darauf hin, dass die Unterstützung begrenzt ist.
Er beschreibt die Einschränkungen in seiner großartigen Antwort " Java Regex Helper ".
Die Gruppenunterstützung mit dem Namen Java 7 Regex wurde bereits im September 2010 im Oracle-Blog vorgestellt .
In der offiziellen Version von Java 7 sind die Konstrukte zur Unterstützung der genannten Erfassungsgruppe:
Andere Alternativen für Pre-Java 7 waren:
Gábor Lipták erwähnt (November 2012) , dass dieses Projekt nicht aktiv sein könnte (mit mehreren ausstehenden Fehlern ) und seine GitHub Gabel könnten stattdessen in Betracht gezogen werden.
( Ursprüngliche Antwort : Januar 2009 , die nächsten beiden Links sind jetzt defekt)
Sie können nicht auf benannte Gruppen verweisen, es sei denn, Sie codieren Ihre eigene Version von Regex ...
Genau das hat Gorbush2 in diesem Thread getan .
Regex2
(eingeschränkte Implementierung, wie von tchrist erneut ausgeführt , da nur nach ASCII-Bezeichnern gesucht wird. tchrist beschreibt die Einschränkung wie folgt:
Hinweis: Beispiele für Regex-Rekursionen finden Sie in Perl- und PCRE-Regexen ( siehe Regexp Power , PCRE-Spezifikationen und Folie " Übereinstimmende Zeichenfolgen mit ausgeglichenen Klammern" ).
Beispiel:
String:
RegExp:
Zugriff
Ersetzen
(Auszug aus der Implementierung)
quelle
Für Leute, die so spät kommen: Java 7 fügt benannte Gruppen hinzu. Dokumentation zu Matcher.group (String groupName).
quelle
Ja, aber es ist chaotisch, die Sonnenklassen zu hacken. Es gibt einen einfacheren Weg:
http://code.google.com/p/named-regexp/
quelle
Was für ein Problem haben Sie mit Jregex ? Es hat gut für mich unter Java5 und Java6 funktioniert.
Jregex macht den Job gut (auch wenn die letzte Version aus dem Jahr 2002 stammt), es sei denn, Sie möchten auf JavaSE 7 warten .
quelle
Für diejenigen, die Pre-Java7 ausführen, werden benannte Gruppen von Joni (Java-Port der Oniguruma- Regexp-Bibliothek) unterstützt. Die Dokumentation ist spärlich, hat aber bei uns gut funktioniert.
Binärdateien sind über Maven verfügbar ( http://repository.codehaus.org/org/jruby/joni/joni/ ).
quelle
Eine etwas alte Frage, aber ich brauchte sie auch und dass die obigen Vorschläge unzureichend waren - und als solche selbst eine dünne Hülle entwickelten: https://github.com/hofmeister/MatchIt
quelle