Utilisation de Matcher et Pattern, probleme de Regexp
...
>Message édité plusieurs fois, voir le edit 3 pour la question actuelle<
...
Bonjour,
Je dois parser des lignes de la forme
mot(mot)
ou
mot(mot,mot,mot)
Avec entre les parenthèse un nombre non finis de mots séparés par des virgules. Quelques espaces pouvant apparaitre.
Je souhaite récupérer tous les "mot"
J'utilise le code suivant :
Code:
1 2
| Pattern p = Pattern.compile("(\\w+) *\\(((\\w+) *,? *)+\\)");
Matcher m = p.matcher(maLigne); |
Logiquement si je passe une ligne comme mot1(mot2,mot3,mot4)
Et une boucle de la forme
Code:
1 2 3
| while( m.find() ) {
System.out.println(m.group());
} |
Devrais m'afficher les mots les uns a la suite des autres.
Soit ma regexp est fausse, soit je me trompe dans l'utilisation du matcher...
Merci de m'éclairer. :jap:
edit : changement de la regexp par "(\\w+) *\\(((\\w+) *,? *)+\\)", celle-ci match toutes mes lignes donc elle doit être bonne.
edit 2 : J'ai trouvé, je cherchais a matcher ma chaine pour en extraire des groupes, mais en fait il faut matcher les groupes que l'on souhaite.
Mon bon code (tout con quand j'y pense) :
Code:
1 2 3 4 5
| Pattern p = Pattern.compile("(\\w+)");
Matcher m = p.matcher(maLigne);
while( m.find() ) {
System.out.println(m.group());
} |
Avec la ligne mot1(mot2,mot3,mot4) résultat :
edit 3 : Finalement j'ai toujours un problème avec d'autres chaines
Je souhaite parser une chaine comme (mot\\((mot,)+\\),)+
Et je souhaite recuperer juste ce qui est entre les parenthèses en gras, et il peux y en avoir plusieurs, car vous aurez remarquez le + à la fin.
Et je ne peux pas faire de split sur la virgule.
Merci :coucou: