regex, pattern, matcher et group sont dans un bateau [JAVA] - Java - Programmation
Marsh Posté le 05-08-2004 à 13:34:58
édité, je vois pas trop ce que je pourrais mettre de plus
Marsh Posté le 05-08-2004 à 13:53:26
ca change rien
Citation : m.groupCount() = 0 |
Marsh Posté le 05-08-2004 à 13:57:47
moi g ça comme output :
Code :
|
je crois que ta boulette est là :
Code :
|
g tjs le count à 0, mais ca replace qd même
Marsh Posté le 05-08-2004 à 14:06:05
okay je viens de comprendre
Citation : Capturing groups are indexed from left to right, starting at one. Group zero denotes the entire pattern, so the expression m.group(0) is equivalent to m.group(). |
http://java.sun.com/j2se/1.4.2/doc [...] group(int)
je pensais devoir eviter group(0) mais en fait c'est justement ce que je voulais
merci
Marsh Posté le 05-08-2004 à 14:07:00
public class Test {
public static void main(String[] args) {
String[] keywordsTab = { "hello", "world" };
String textStr = "Hello world ! this is my first program.";
StringBuffer sb = new StringBuffer();
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]+"_" );
for (int tmp = 0; m.find(); tmp++) {
m.appendReplacement(sb, "_"+m.group(tmp)+"_" );
System.out.println(m.group());
}
m.appendTail(sb);
}
System.out.println(sb.toString());
}
}
ca ca marche ...lol ben c bon t'a trouvé...
Marsh Posté le 05-08-2004 à 14:09:12
nan en fait spa vraiment ca mais ca me fait déjà pas mal avancer
merci
Marsh Posté le 05-08-2004 à 11:58:18
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
java.lang.IndexOutOfBoundsException: No group 1
java.util.regex.Matcher.group(Unknown Source)
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
---------------
\@/