2013-03-30 3 views
0

Je suis en fait nouveau à Java et je suis heureux que la regex fonctionne que j'ai trouvé ^^ Mais maintenant j'ai besoin de savoir, comment obtenir plus d'une chaîne et le meilleur serait si tout serait dans un tableau. En fait, je le fais comme ceci:Trouver plus de 1 chaîne avec Regex

Pattern p = Pattern.compile("name~(.*?)@"); 
Matcher m = p.matcher(response); 

while (m.find()) { 
    System.out.println("Found: " + m.group()); 
} 

Quelqu'un peut-il aider?

+3

Quel problème avez-vous? –

+0

Comme je l'ai écrit, je ne ai pas besoin de seulement 1 match, j'ai besoin de tous les matchs – Phil

+0

Votre code vous donne tous les matchs, n'est-ce pas? – Howard

Répondre

1

Vous avez juste besoin de mettre vos résultats en List:

final List<String> results = new LinkedList<>(); 
while (m.find()) { 
    results.add(m.group()); 
} 

Vous pouvez alors accéder aux résultats du List directement - si vous avez besoin d'un accès aléatoire utiliser ArrayList plutôt que d'un LinkedList. Si vous avez besoin d'un tableau, alors convertir simplement

final String[] resultArr = results.toArray(new String[results.size()]); 

Si vous correspondant à plusieurs éléments dans un String vous pouvez aider le moteur de regex un peu en faisant correspondre [^@] et en faire possessive plutôt que d'utiliser un réticente .*

Pattern p = Pattern.compile("name~([^@]++)@"); 
Questions connexes