Rozumiem, że java.regex
pakiet nie obsługuje nazwanych grup ( http://www.regular-expressions.info/named.html ), więc czy ktoś może wskazać mi bibliotekę innej firmy, która ją obsługuje?
Patrzyłem na jregex, ale jego ostatnie wydanie było w 2002 roku i nie działało dla mnie (wprawdzie próbowałem tylko przez chwilę) pod java5.
Odpowiedzi:
( Aktualizacja : sierpień 2011 )
Jak geofflane wspomina w swojej odpowiedzi , Java 7 obsługuje teraz nazwane grupy .
tchrist zwraca uwagę w komentarzu, że wsparcie jest ograniczone.
On szczegóły ograniczeń w swej wielkiej odpowiedź „ Java Regex Helper ”
Obsługa grup o nazwie regex Java 7 została zaprezentowana we wrześniu 2010 roku na blogu Oracle .
W oficjalnym wydaniu Java 7 konstrukcje obsługujące nazwaną grupę przechwytującą to:
Inne alternatywy dla wersji przed Java 7 to:
Gábor Lipták wspomina (listopad 2012), że projekt ten może nie być aktywne (z kilku wybitnych bugs ), a jego GitHub widelec można uznać zamiast.
( Oryginalna odpowiedź : styczeń 2009 r. , Kolejne dwa linki są teraz uszkodzone)
Nie możesz odwoływać się do nazwanej grupy, chyba że zakodujesz własną wersję Regex ...
Dokładnie to zrobił Gorbush2 w tym wątku .
Regex2
(ograniczona implementacja, jak wskazał ponownie tchrist , ponieważ szuka tylko identyfikatorów ASCII. tchrist opisuje to ograniczenie jako:
Uwaga: przykłady prawdziwej rekurencji wyrażeń regularnych można znaleźć w wyrażeniach regularnych Perla i PCRE, jak wspomniano na slajdzie Regexp Power , PCRE specs and Matching Strings with Balanced Nawiasy
Przykład:
Strunowy:
RegExp:
Dostęp
Zastąpić
(wyciąg z realizacji)
źródło
Dla osób przychodzących tak późno: Java 7 dodaje nazwane grupy. Dokumentacja Matcher.group (String groupName).
źródło
Tak, ale to niechlujne hakowanie zajęć ze słońca. Jest prostszy sposób:
http://code.google.com/p/named-regexp/
źródło
Jaki problem masz z jregex ? U mnie działało dobrze pod java5 i java6.
Jregex dobrze sobie radzi (nawet jeśli ostatnia wersja pochodzi z 2002 roku), chyba że chcesz poczekać na javaSE 7 .
źródło
W przypadku użytkowników korzystających z wersji starszej niż java7, nazwane grupy są obsługiwane przez joni (port Java biblioteki regexp Oniguruma ). Dokumentacja jest skromna, ale nam się udało.
Pliki binarne są dostępne za pośrednictwem Maven ( http://repository.codehaus.org/org/jruby/joni/joni/ ).
źródło
Trochę stare pytanie, ale okazało się, że potrzebuję tego również i że powyższe sugestie były nieadekwatne - i jako takie - sam opracowałem cienkie opakowanie: https://github.com/hofmeister/MatchIt
źródło