Je crois comprendre que le java.regex
package ne prend pas en charge les groupes nommés ( http://www.regular-expressions.info/named.html ), alors quelqu'un peut-il me diriger vers une bibliothèque tierce qui le fait?
J'ai regardé jregex mais sa dernière version date de 2002 et cela n'a pas fonctionné pour moi (certes, je n'ai essayé que brièvement) sous java5.
Réponses:
( Mise à jour : août 2011 )
Comme le mentionne geofflane dans sa réponse , Java 7 prend désormais en charge les groupes nommés .
tchrist souligne dans le commentaire que le support est limité.
Il détaille les limites dans sa grande réponse " Java Regex Helper "
Java 7 regex named group support a été présenté en septembre 2010 sur le blog d'Oracle .
Dans la version officielle de Java 7, les constructions pour prendre en charge le groupe de capture nommé sont:
D'autres alternatives pour pré-Java 7 étaient:
( Réponse originale : janvier 2009 , avec les deux liens suivants maintenant rompus)
Vous ne pouvez pas faire référence à un groupe nommé, sauf si vous codez votre propre version de Regex ...
C'est précisément ce que Gorbush2 a fait dans ce fil .
Regex2
(implémentation limitée, comme souligné à nouveau par tchrist , car il ne recherche que les identifiants ASCII. tchrist détaille la limitation comme:
Remarque: vous pouvez trouver de vrais exemples de récursions de regex dans les expressions régulières Perl et PCRE, comme mentionné dans la diapositive Regexp Power , PCRE specs and Matching Strings with Balanced Parentheses )
Exemple:
Chaîne:
RegExp:
Accès
Remplacer
(extrait de l'implémentation)
la source
Pour les personnes qui arrivent tard: Java 7 ajoute des groupes nommés. Documentation Matcher.group (String groupName).
la source
Oui, mais son piratage désordonné des classes de soleil. Il existe un moyen plus simple:
http://code.google.com/p/named-regexp/
la source
Quel genre de problème rencontrez-vous avec jregex ? Cela a bien fonctionné pour moi sous java5 et java6.
Jregex fait bien le travail (même si la dernière version date de 2002), sauf si vous voulez attendre javaSE 7 .
la source
Pour ceux exécutant pré-java7, les groupes nommés sont pris en charge par joni (port Java de la bibliothèque de regexp d' Oniguruma ). La documentation est rare, mais elle a bien fonctionné pour nous.
Les binaires sont disponibles via Maven ( http://repository.codehaus.org/org/jruby/joni/joni/ ).
la source
Une question un peu ancienne mais je me suis retrouvé besoin de cela aussi et que les suggestions ci-dessus étaient inadéquates - et en tant que telles - j'ai moi-même développé un mince emballage: https://github.com/hofmeister/MatchIt
la source