bonjour
je voudrais remplacer plusieurs chaines de caractères par elles-mêmes plus une ou plusieurs autres chaines de caractères.
les chaines à matcher sont dans String[] keywordsTab, le texte a modifier dans String textStr, je boucle sur keywordTab et je recherche chaque chaine individuellement.
mon problème : je n'arrive pas a récupérer ce qui a été réellement matché. pour respecter la case par exemple je ne peux pas insérer mon keywordsTab[i] au milieu du texte.
j'ai vu que la méthode group(int) premettait de récupérer le résultat de la recherche précédente mais tout ce que j'ai c'est
Citation :
java.lang.IndexOutOfBoundsException: No group 1
java.util.regex.Matcher.group(Unknown Source)
|
Code :
- String[] keywordsTab = { "hello", "world" };
- String textStr = "Hello world ! this is my first program.";
- for (int i = 0; i < keywordsTab.length; i++) {
- Pattern p = Pattern.compile(keywordsTab[i],Pattern.CASE_INSENSITIVE);
- Matcher m = p.matcher(textStr);
- //m.replaceAll("_"+keywordsTab[i]+"_" );
- StringBuffer sb = new StringBuffer();
- for (int tmp = 1; m.find(); tmp++) {
- m.appendReplacement(sb, "_"+m.group(tmp)+"_" );
- }
- m.appendTail(sb);
- }
- System.out.println(sb.toString());
|
si vous avez une idée je suis preneur
edit: le code en commentaire fonctionne mais je ne peux pas récuperer ce qui a été matché
Message édité par lint le 05-08-2004 à 13:33:44
---------------
\@/