Page 1 sur 1

[RESOLU] Recherche d'une Regexp

Posté : 08 mars 2008 21: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 22:25
par GregLand
A moins que ce ne soit [0-9]*,[0-9]* EUR :roll:

Posté : 08 mars 2008 23: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 02: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 :P
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 04:52
par GregLand
Mick@el a écrit :elle aurait aussi pris 12,,,,12345 EUR
Bien vu... Image
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 #... :D


Merci, j'avoue lutter un peu avec les Regexp... surtout quand je suis de matin (5:00 -> 13:00) pendant un week end Image

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... Image 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
Image

Posté : 09 mars 2008 13: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 13: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 14: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 Image )

On peut à la limite limiter à 999.999.999.999,99 EUR si ça pose problème :D (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 15: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 16:10
par GregLand
t'avais mis 3 chiffres après la virgule
Je m'étais effectivement trompé... Que 2 chiffres après la virgule... Image

ça fonctionne nikel....
Merci a vous deux !

Posté : 27 mars 2008 19: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 01: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 Image )

On peut à la limite limiter à 999.999.999.999,99 EUR si ça pose problème :D (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 :D

[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 11:32
par Duke
et c'est quoi regexp?
j'ai dû louper une étape là...

Posté : 28 mars 2008 15:17
par GregLand
Quelle horreur Image
Je savais que tu allais dire ça !!! Image
et c'est quoi regexp?
Tu as essayé une recherche dans Google ? Image