Bonjour,
Bon d'abord je sais pas comment tu as trouvé cette expression mais ce n'est pas une expression régulière en Java ça ressemble plus à du Perl dans sa forme /expressionRecherchee/. Essayer ça directement en Java et on trouve rien à coup sûr.
Je peux te proposer une solution qu'il te faudra approfondir. Elle permet de faire à peu près ce que tu veux faire. A toi de virer les autres soucis (et donc de comprendre ce que tu souhaites faire). Personnellement, je préfèrerais faire ça lors du traitement incluant le cast en Float. Une solution parmi tant d'autres : "-?[0-9]+[,\\.[0-9]]*" (A noter qu'elle n'est pas si différente de celle énoncée par DARKSIDIOUS)
Exemple :
String[] stringTable = {"20","1.2","128,333","56;5",".23", "25,","30.",",84","-6.3","-50"};
Pattern p = Pattern.compile("-?[0-9]+[,\\.[0-9]]*"); for(String s : stringTable){ Matcher m = p.matcher(s); if(m.matches()){ System.out.println("Regex pour "+s+" a trouvé : "+m.group()); }else{ System.out.println("Regex pour "+s+" n'a rien trouvé."); } }
Retourne :
Regex pour 20 a trouvé : 20 Regex pour 1.2 a trouvé : 1.2 Regex pour 128,333 a trouvé : 128,333 Regex pour 56;5 n'a rien trouvé. Regex pour .23 n'a rien trouvé. Regex pour 25, a trouvé : 25, Regex pour 30. a trouvé : 30. Regex pour ,84 n'a rien trouvé. Regex pour -6.3 a trouvé : -6.3 Regex pour -50 a trouvé : -50
En tout cas, attention aux metacaractères. Le point est un metacaractère qui signifie "tout caractère" donc si on veut récupérer seulement un point on utilisera d'abord le backslash ce qui donnera en Java \\. .
Voilà, à plus !
|