[Regex] exemple de l'API optimisable ?
bonjour,
il existe dans l'api java, pour la class scanner un exemple
Code:
1 2 3 4 5 6 7 8
|
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i);
s.close(); |
et je me demandais si il ne serait pas possible dans cette exemple donné, de modifier l'expression régulière en mettant "(qqch fish)*" puisque c'est lui le délimiteur.
en faite ma question qui se cache derière est peut on récupéré autant de fois que nécessaire des données correspondante à une structure particulière ?
Re: [Expression régulière] example de l'API optimisable ???
Salut,
Citation:
Envoyé par Celeborn
et je me demandais si il ne serait pas possible dans cette exemple donné, de modifier l'expression régulière en mettant "(qqch fish)*" puisque c'est lui le délimiteur.
Cela dépend de ce que tu recherches... Dans l'exemple la chaine recherché doit correspondre à "<nombre> fish <nombre> fist <chaine> fish <chaine>"... Si tu raccourcis le pattenr tu ne peux plus vérifier l'ordonnancement exact (par exemple "1 fish red fish 3 fish blue fish" ne conconde pas avec le pattern de l'exemple).
Citation:
Envoyé par Celeborn
en faite ma question qui se cache derière est peut on récupéré autant de fois que nécessaire des données correspondante à une structure particulière ?
Dans cette exemple la méthode findInLine() renvoit toute la chaine (ou presque). Si on considère que tu ne veux pas différencier les nombres/chaines ni l'ordonnancement, tu peux faire la même chose en appellant plusieurs fois findInLine() :
Code:
1 2 3 4 5 6 7
| String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
while ( s.findInLine("(\\w+) fish") != null) {
MatchResult result = s.match();
System.out.println(result.group(1));
} |
Les regexp sont assez puissantes et tu peux définir pas mal de format : http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html
a++