Matcher qui ne veut pas se réséter
ce code marche
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public static void test() {
String output = "";
Pattern p = Pattern.compile("\\d");
Matcher m1 = p.matcher("01234");
if (m1.find()) {
System.out.println("\t\t" + m1.group());
}
//now reset the matcher with new data
m1.reset();
System.out.println("After resetting the Matcher");
//iterate through the matcher
while (m1.find()) {
System.out.println("\t\t" + m1.group());
}
} |
mais le mien ne marche pas
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| private String extractNextWord(String _source){
Pattern _p = Pattern.compile("<span class=\"resTeaser\">.*?</span>");
Matcher _m = _p.matcher(_source);
String _resSource = "";
String _nextWord = "null";
Random _r = new Random();
while (true) {
int _resTarget = _r.nextInt(10);
_m.reset();
for(int i=0 ; _m.find() && i<=_resTarget ; i++){
if (i == _resTarget) {
_resSource = _m.group(0);
}
}
...
//code avec break pour extraire une _string de _resSource si _resSource convient, sinon on repart dans le for pour en chopper un nouveau
}
return _string;
} |
Plus précisément une fois que le programme est entré puis sorti de la boucle for, il ne veut plus y rerentré, comme si la condition m.find() n'était plus remplie, comme si le reset n'avait aucun effet !
Par contre si dans mon code je remplace
par
la tout baigne. Ca me tue la race:aie:
Info exclusive sur H4dop| à quiconque m'explique POURQUOI CA NE MARCHE PAS (je la posterai ici ceci dit, pas en pm).
edit : merci