2010-03-10 7 views
2
System.out.println(matcher.group(1)); 
System.out.println(matcher.group()); 

J'aime savoir quelle est la différence entre les deux codes ci-dessus. J'ai différentes sorties. Quelqu'un peut-il élaborer à ce sujet?Quelle est la différence entre ces deux ci-dessous?

Merci

+0

Pour les échantillons simples, j'obtiens exactement les mêmes valeurs pour les groupes() et les groupes (1): pouvez-vous fournir une expression spécifique et une chaîne d'entrée? –

Répondre

8

L'appel à group() vous donne toute la chaîne qui correspond, alors que group(1) vous donne le premier parenthésée « Capture » groupe (ou plus généralement, group(n) vous donnera la n'th groupe capture, comptage gauche/parenthèse ouvrante , à partir de 1).

Ainsi, par exemple, si vous aviez une chaîne d'entrée comme ceci:

The quick brown fox 

Et vous en correspondance avec l'expression régulière suivante (sans les guillemets):

"The (\\w+)" 

Alors group() vous donnerait "Le rapide" et group(1) vous donnerait "rapide".

Pour plus de détails sur le fonctionnement de toutes ces expressions rationnelles en Java, regardez Voir le java.util.regex.Matcher JavaDoc.

+0

Il manque quelque chose à cette expression régulière, n'entendiez-vous pas "' The (\\ w +) '"? (et techniquement, il ne correspondra pas - 'matches()', il sera trouvé - 'find()') –

+0

Mis à jour pour ajouter les barres obliques inverses, et vous avez raison à propos de 'matches()' versus 'find()' . –

2

Je vous renvoie au JavaDocs pour Matcher

groupe

():

Renvoie la sous-séquence d'entrée adaptée par le match précédent

groupe

(int) :

Renvoie la sous-séquence d'entrée capturée par le groupe donné au cours de l'opération de correspondance précédente.

+0

Veuillez utiliser '> ...' pour ajouter un blockquote. – kennytm

+0

@KennyTM Fait :-) – karlgrz

1

Le API doc est un très bon endroit pour regarder d'abord.

Questions connexes