Page 1 sur 1
[RESOLU] Recherche d'une Regexp
Posté : 08 mars 2008 20:08
par GregLand
Hello...
Je cherche une expression régulière permettant de trouver un nombre sous le format :
15,50 EUR
110,62 EUR
1,10 EUR
(qui représente bien entendue une somme d'argent)
Je suis arrivé a ceci :
#[0-9]+[,]+[0-9]+ EUR#
mais ça ne fonctionne pas toujours...
Une solution les fans de regexp ?
Posté : 08 mars 2008 21:25
par GregLand
A moins que ce ne soit
[0-9]*,[0-9]* EUR 
Posté : 08 mars 2008 22:42
par Naveed
[0-9]+[,]+[0-9]+ EUR
ça ça marche.
j'ai testé là
http://www.annuaire-info.com/outil-refe ... reguliere/
et là :
http://www.regular-expressions.info/jav ... ample.html
je sais pas pk t'a mis des dièses
sinon celle des étoiles fonctionnent mais elle est pas correcte parce qu'elle trouver correct si tu met ",05 EUR" par exemple.
Posté : 09 mars 2008 01:52
par Mick@el
\d+,\d+ EUR
(pareil que [0-9]+,[0-9]+ EUR)
Pour info Greg, ta regex initiale, elle aurait aussi pris 12,,,,12345 EUR

Donc si tu veux être encore plus strict, genre N+,NN EUR tu peux utiliser
\d+,\d{2} EUR qui prendra 12,34 EUR mais pas 12,345 EUR
Posté : 09 mars 2008 03:52
par GregLand
Mick@el a écrit :elle aurait aussi pris 12,,,,12345 EUR
Bien vu...
Naveed a écrit :je sais pas pk t'a mis des dièses
Je trouve que ça fait plus jolie et moins froid avec des #...
Merci, j'avoue lutter un peu avec les Regexp... surtout quand je suis de matin (5:00 -> 13:00) pendant un week end
Juste une petite chose, il faudrait aussi que les nombres :
15,50 EUR
110,62 EUR
1,10 EUR
9,99 EUR
12.490,00 EUR
321.123.125,46 EUR
1.100.000,00 EUR
.....
soient pris en compte...
La version \d+,\d{2}+ EUR me plait bien pour le moment...

par contre, {2} me créé une erreur de regexp...
En fait (pour info) ce serait pour trouver la valeur de l'enchère actuelle
dans Ebay

Posté : 09 mars 2008 12:26
par Naveed
et moi qui croyait que le dièse c t un truc regexp, c pour ça que je trouvais pas le caractère, ah lala sacré greg, maintenant tu nous mets des pièges esthétiques lol
Posté : 09 mars 2008 12:44
par Naveed
\d+,\d{2}+ EUR
cette expression est valide
sinon si t'a des problèmes d'accolades, tu peux faire
\d+,\d\d EUR
(j'aimais bien le [0-9] c t plus parlant)
tu es sûr que tu veux valider le nombre "321.123.125,46 EUR" ??
parce que pour tout le reste l'expression fonctionne.
on pourrait affiner de manière plus restrictive mais il faut déjà que les accolades fonctionnent chez toi sinon ça va être difficile.
Posté : 09 mars 2008 13:48
par GregLand
tu es sûr que tu veux valider le nombre "321.123.125,46 EUR" ??
Effectivement, j'aimerais valider n'importe quel nombre... (même si je les aient pas sur mon compte

)
On peut à la limite limiter à 999.999.999.999,99 EUR si ça pose problème

(mais de préférence non)
Donc on suppose les nombres :
999.999.999.999,99 EUR
1.100.000,00 EUR
321.123.125,46 EUR
12.490,00 EUR
9,99 EUR
ça donnerait quelque chose comme celà ?
([0-9]+.|)([0-9]+.|)([0-9]+.|)([0-9]+,|)[0-9]+ EUR
ou ça :
(\d+.|)(\d+.|)(\d+.|)(\d+,|)\d+ EUR
ça a l'air de fonctionner, mais il y a peut être plus simple...
Posté : 09 mars 2008 14:44
par Naveed
Dernière édition par GregLand le 09 Mar 2008 14:04; édité 1 fois
-> je te posais la question parce que t'avais mis 3 chiffres après la virgule.
ton problème d'accolade est réglé ou pas?
sinon
\d+,\d\d EUR
fonctionne tt simplement !
Posté : 09 mars 2008 15:10
par GregLand
t'avais mis 3 chiffres après la virgule
Je m'étais effectivement trompé... Que 2 chiffres après la virgule...
ça fonctionne nikel....
Merci a vous deux !
Posté : 27 mars 2008 18:55
par GregLand
Un autre Testeur de Regexp pas mal du tout si ça vous intéresse...
ça se passe par là
Posté : 28 mars 2008 00:37
par Mick@el
GregLand a écrit :tu es sûr que tu veux valider le nombre "321.123.125,46 EUR" ??
Effectivement, j'aimerais valider n'importe quel nombre... (même si je les aient pas sur mon compte

)
On peut à la limite limiter à 999.999.999.999,99 EUR si ça pose problème

(mais de préférence non)
Donc on suppose les nombres :
999.999.999.999,99 EUR
1.100.000,00 EUR
321.123.125,46 EUR
12.490,00 EUR
9,99 EUR
ça donnerait quelque chose comme celà ?
([0-9]+.|)([0-9]+.|)([0-9]+.|)([0-9]+,|)[0-9]+ EUR
ou ça :
(\d+.|)(\d+.|)(\d+.|)(\d+,|)\d+ EUR
ça a l'air de fonctionner, mais il y a peut être plus simple...
Quelle horreur
[0-9.]+,\d{2} EUR
De toute façon, si c'est pour récupérer ça sur ebay, on risque pas d'avoir deux virgules de suite ou autre connerie ^^
Donc autant faire une regex plus permissive mais plus simple :
[0-9.,]+ EUR
Posté : 28 mars 2008 14:17
par GregLand
Quelle horreur

Je savais que tu allais dire ça !!!
et c'est quoi regexp?
Tu as essayé une recherche dans Google ?
