8
votes

Java Regex - Faites partie d'une partie spécifique de la chaîne

J'essaie d'accéder à une certaine partie de plusieurs chaînes qui suivent un modèle.

Voici un exemple de ce que j'essaie de faire. P>

String s = "Hello my name is Joe";    
if(Pattern.matches(s,"Hello my name is ([\\w]*)"))
{
    System.out.println("Name entered: $1");
}


2 commentaires

La ligne si manque une parenthèse de fermeture ...


Avez-vous réellement vérifié le Documentation ?


4 Réponses :


12
votes

Échangez les paramètres à la méthode code> correspondant code> et votre si code> fonctionnera (REGEX est le 1er paramètre, pas la deuxième).

Cependant, vous avez toujours gagné 'T Imprimer le premier groupe de capture avec 1 $ code>. Pour ce faire: P>

String s = "Hello my name is Joe";    
Matcher m = Pattern.compile("Hello my name is ([\\w]*)").matcher(s);
if(m.matches())
{
    System.out.println("Name entered: " + m.group(1));
}


1 commentaires

Eh bien, c'était embarrassant. Merci. De plus, je pense que la deuxième ligne doit être la correspondance M = Pattern.comPile ("Bonjour mon nom est ([\\ w] *)"). Correspondant (s);



1
votes

Essayez d'utiliser la classe de correspondance, voir cette page pour plus d'informations sur les expressions régulières en Java http://java.sun.com/developer/technicalarticles/relases/1.4regex/


0 commentaires

1
votes

Parce que vous avez les paramètres à motif.matches () en arrière.

http://docs.oracle. COM / Javase / 6 / Docs / API / Java / Util / Regex / Pattern.html

En outre, vous n'avez pas besoin d'un ensemble (les supports). De plus, vous devrez utiliser la classe MATCHER et obtenir la brackreference via la méthode GROUP () .


0 commentaires

2
votes

Je pense que vous recherchez ceci:

final String s = "Hello my name is Joe";
final Pattern p = Pattern.compile("Hello my name is (\\w++)");
final Matcher m = p.matcher(s);
if (m.matches()) {
   System.out.printf("Name entered: %s\n", m.group(1));
}


0 commentaires