Expression régulière nommé capturer les groupes de soutien dans Java 7
Depuis Java 7 expressions régulières API offre un soutien pour les nommé capturer les groupes.
La méthode java.util.regex.Matcher.groupe(Chaîne) renvoie l'entrée sous-suite capturé par le nommé-capture d'un groupe, mais il n'y a pas d'exemple disponible sur l'API de documentations.
Quelle est la bonne syntaxe pour spécifier et de récupérer une capture d'un groupe nommée dans Java 7?
Vous devez vous connecter pour publier un commentaire.
Précisant capture d'un groupe nommée
Utiliser la regex suivante avec une seule capture d'un groupe comme un exemple
([Pp]attern)
.Voici 4 exemples sur la façon de spécifier un capture d'un groupe nommée pour l'expression régulière ci-dessus:
Noter que le nom de la capture d'un groupe doit strictement correspond au Modèle suivant:
Le nom du groupe est sensible à la casse, vous devez préciser les nom de groupe lorsque vous parlez à eux (voir ci-dessous).
Backreference la capture d'un groupe nommée dans la regex
À en arrière-référencer le contenu pointé par une capture d'un groupe nommée dans la regex (correspond à 4 exemples ci-dessus):
La capture d'un groupe nommée est toujours numérotées, dans tous les 4 exemples, il peut être référencé avec
\1
, comme la normale.Reportez-vous à la capture d'un groupe nommée dans la chaîne de remplacement
À reportez-vous à la capture d'un groupe dans la chaîne de remplacement (correspondent à 4 exemples ci-dessus):
Même que ci-dessus, dans tous les 4 exemples, le contenu de la capture d'un groupe peut être cité de la
$1
dans la chaîne de remplacement.Capture d'un groupe nommée dans COMMENTAIRE mode
À l'aide de
(?<name>[Pp]attern)
comme un exemple de cette section.Oracle de la mise en œuvre de la
COMMENT
mode (embedded drapeau(?x)
) analyse les exemples suivants pour être identique à l'expression régulière ci-dessus:Sauf pour
?<
qui doit pas être séparés, il permet à l'arbitraire de l'espacement de même entre le nom de la capture d'un groupe.Même nom pour les différents groupes capturés?
Alors qu'il est possible .NET, Perl et PCRE pour définir le même nom pour les différents groupes capturés, il est actuellement pas pris en charge en Java (Java 8). Vous ne pouvez pas utiliser le même nom pour les différents groupes capturés.
Capture d'un groupe nommée Api
De nouvelles méthodes dans la Correspondance de classe pour prendre en charge la récupération de texte capturé par nom de groupe:
groupe(String name)
(à partir de Java 7)start(String name)
(à partir de Java 8)à la fin(String name)
(à partir de Java 8)La méthode correspondante est absente de
résultat du match
classe de Java 8. Il y a un Demande d'amélioration JDK-8065554 pour cette question.Il n'y a actuellement pas d'API pour obtenir la liste des nommés de capturer les groupes dans la regex. Nous avons à sauter à travers les cerceaux pour obtenir. Mais il est tout à fait inutile pour la plupart des fins, sauf pour l'écriture d'une expression régulière testeur.
La nouvelle syntaxe pour une capture d'un groupe est
(?<name>X)
pour un groupe correspondant X s'appelle un "nom". Le code suivant capture les regex (\w+) (n'importe quel groupe de caractères alphanumériques). Au nom de cette capture d'un groupe, vous devez ajouter l'expression ? à l'intérieur des parenthèses, juste avant la regex pour être capturé.Ce code renvoie imprime le résultat suivant: