Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
541 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Pb (surement tout con) avec une expression régulière (tte conne)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pb (surement tout con) avec une expression régulière (tte conne)

n°216078
El_gringo
Posté le 18-09-2002 à 09:29:15  profilanswer
 

G un peu honte de poster ça, ms j'comprend vraiment pas là :
je veux virer tous les caractères non numériques d'une chaine de char.
Pour ça, la solution la + simple que g trouvé, c d'utiliser une expression régulière (du jdk 1.4).
Donc je fait ça :

Code :
  1. String regex = "[^+-1234567890]";
  2. return (_strValue.replaceAll(regex, "" ));


 
et je fait un test où _strValue vaut £1.50a0,00
Et je me rend compte que les '.' et les ',' sont conservés.
 
...Une expliquation ?

mood
Publicité
Posté le 18-09-2002 à 09:29:15  profilanswer
 

n°216114
BifaceMcLe​OD
The HighGlandeur
Posté le 18-09-2002 à 10:09:56  profilanswer
 

Ben a priori, je trouve ça logique, puisque tu ne les a pas listés dans ton expression régulière...  :heink:

n°216120
El_gringo
Posté le 18-09-2002 à 10:21:34  profilanswer
 

C peut être pas standard, mais en Java, [^abc] ça équivaut à n'importe quel caractère exepté a, b, et c.

n°216131
darklord
You're welcome
Posté le 18-09-2002 à 10:35:02  profilanswer
 

El_Gringo a écrit a écrit :

C peut être pas standard, mais en Java, [^abc] ça équivaut à n'importe quel caractère exepté a, b, et c.




 
tu es sûr?


---------------
Just because you feel good does not make you right
n°216135
El_gringo
Posté le 18-09-2002 à 10:41:42  profilanswer
 

DarkLord a écrit a écrit :

 
 
tu es sûr?




 
extrait de javadoc :

Character classes  
[abc] a, b, or c (simple class)  
[^abc] Any character except a, b, or c (negation)  
[a-zA-Z] a through z or A through Z, inclusive (range)  
[a-d[m-p]] a through d, or m through p: [a-dm-p] (union)  
[a-z&&[def]] d, e, or f (intersection)  
[a-z&&[^bc]] a through z, except for b and c: [ad-z] (subtraction)  
[a-z&&[^m-p]] a through z, and not m through p: [a-lq-z](subtraction)  


Message édité par El_gringo le 18-09-2002 à 10:42:00
n°216136
El_gringo
Posté le 18-09-2002 à 10:42:40  profilanswer
 

D'ailleurs,  il me vire bien '£' et les lettres !

n°216138
gilou
Modérateur
Modzilla
Posté le 18-09-2002 à 10:44:14  profilanswer
 

[^...] c'est un truc standard, ça.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°216140
darklord
You're welcome
Posté le 18-09-2002 à 10:47:54  profilanswer
 

bin donc tout va bien ...


---------------
Just because you feel good does not make you right
n°216142
El_gringo
Posté le 18-09-2002 à 10:50:07  profilanswer
 

bin non, tout va pas bien !
Sinon je posterai pas.
quand en entrée j'ai "£1.50a0,00 "
je retrouve "1.500,00" en sortie.
Bref, on dirait qu'il me supprime pas les '.' et les ','

n°216144
krosso
j'suis à la bourre
Posté le 18-09-2002 à 10:52:54  profilanswer
 

Bizarre en effet.
Sinon les ; sont bien supprimés.

mood
Publicité
Posté le 18-09-2002 à 10:52:54  profilanswer
 

n°216146
krosso
j'suis à la bourre
Posté le 18-09-2002 à 10:55:53  profilanswer
 

ce serait pas le + qui serait mal interprété ?

n°216152
krosso
j'suis à la bourre
Posté le 18-09-2002 à 11:03:33  profilanswer
 

bingo:
 

Code :
  1. String _strValue="£1.50a0,00plouf\rplonk,paf;paf";
  2. String regex = "[^1234567890-[+]]";
  3. System.out.println(_strValue.replaceAll(regex, "" ));

n°216156
darklord
You're welcome
Posté le 18-09-2002 à 11:06:50  profilanswer
 

a propos qqun as t il une meilleure regex pour représenter une adresse email?
 

Code :
  1. /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/


---------------
Just because you feel good does not make you right
n°216159
krosso
j'suis à la bourre
Posté le 18-09-2002 à 11:11:23  profilanswer
 

DarkLord a écrit a écrit :

a propos qqun as t il une meilleure regex pour représenter une adresse email?
 

Code :
  1. /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/






 
Email validator that adheres directly to the specification for email address naming. It allows for everything from ipaddress and country-code domains, to very rare characters in the username.
  ^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$  
 
trouvée sur http://www.regxlib.com

n°216163
El_gringo
Posté le 18-09-2002 à 11:12:34  profilanswer
 

krosso a écrit a écrit :

bingo:
 

Code :
  1. String _strValue="£1.50a0,00plouf\rplonk,paf;paf";
  2. String regex = "[^1234567890-[+]]";
  3. System.out.println(_strValue.replaceAll(regex, "" ));






 
Yesss, excellent, merci beaucoup.
Les expression régulières, c puissant, ms du coup, c assez comlpexe à utiliser.

n°216174
darklord
You're welcome
Posté le 18-09-2002 à 11:27:13  profilanswer
 

krosso a écrit a écrit :

 
 
Email validator that adheres directly to the specification for email address naming. It allows for everything from ipaddress and country-code domains, to very rare characters in the username.
  ^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$  
 
trouvée sur http://www.regxlib.com




 
 
 :eek2: ça arrache ! Merci ;)


---------------
Just because you feel good does not make you right
n°216186
darklord
You're welcome
Posté le 18-09-2002 à 11:37:14  profilanswer
 

mais ça marche pô :(
 
Je dois retrouver une adresse email dans un texte quelconque et l'email peut par exemple etre contenue entre paranthèse, genre
 
(toto@tutu.com) ou 'toto@tutu.com'
 
une idée?
 
Edit: j'ai rien dit. C'est ma faute visiblement parce que meme avec toto@tutu.com tout seul il trouve pas ...


Message édité par darklord le 18-09-2002 à 11:57:53

---------------
Just because you feel good does not make you right
n°216189
krosso
j'suis à la bourre
Posté le 18-09-2002 à 11:39:40  profilanswer
 

DarkLord a écrit a écrit :

mais ça marche pô :(




ah ouais, le truc c'est un validateur, pas un matcher.
Faut peut-être le faire en deux fois:
Un matcher pas trop restricitf qui capture des chaines ressemblant à des emails.
Puis on passe la chaine trouvée au validateur.

n°216190
Toucouch
Posté le 18-09-2002 à 11:40:10  profilanswer
 

El_Gringo a écrit a écrit :

G un peu honte de poster ça, ms j'comprend vraiment pas là :
je veux virer tous les caractères non numériques d'une chaine de char.
Pour ça, la solution la + simple que g trouvé, c d'utiliser une expression régulière (du jdk 1.4).
Donc je fait ça :

Code :
  1. String regex = "[^+-1234567890]";
  2. return (_strValue.replaceAll(regex, "" ));


 
et je fait un test où _strValue vaut £1.50a0,00
Et je me rend compte que les '.' et les ',' sont conservés.
 
...Une explication ?




Bon, j'arrive après la guerre, mais est-ce-que

Code :
  1. [^-0-9+]


ne marcherait pas mieux (en plus c'est plus simple!)
D'après moi, le problème vient de la place du '-'. En effet, placé entre 2 caractères, il indique la plage de caractères qui s'étend du caractère précédent le '-' au caractère suivant. Ainsi, [0-9] prend tous les caractères de 0 à 9. Si l'on veut inclure le caractères '-' dans une classe de caractères, on place  le '-' en début de liste. Cette explication me semble d'autant plus plausible que les caractères dont les codes ASCII sont situés entre le '+' et le '1' sont: ',' '-' '.' '/' et '0'.
 
Essaie ça et tiens moi au courant STP...

n°216191
darklord
You're welcome
Posté le 18-09-2002 à 11:40:27  profilanswer
 

krosso a écrit a écrit :

 
ah ouais, le truc c'est un validateur, pas un matcher.
Faut peut-être le faire en deux fois:
Un matcher pas trop restricitf qui capture des chaines ressemblant à des emails.
Puis on passe la chaine trouvée au validateur.
 




 
ah oki ct le matcher que je cherchais moi ;)


---------------
Just because you feel good does not make you right
n°216212
darklord
You're welcome
Posté le 18-09-2002 à 12:03:24  profilanswer
 

grrr je trouve pas. Quelqu'un a une idée pour une expression régulière qui pourrait trouver (pas valider) une adresse email parmis un texte libre ...


---------------
Just because you feel good does not make you right
n°216238
Toucouch
Posté le 18-09-2002 à 12:30:17  profilanswer
 

DarkLord a écrit a écrit :

grrr je trouve pas. Quelqu'un a une idée pour une expression régulière qui pourrait trouver (pas valider) une adresse email parmis un texte libre ...



Code :
  1. \s([-a-z0-9_.]+@[-a-z0-9_.]+\.(net|com|fr|org))\s


Pas dit que ça détecte tout (domaines étrangers (.de, .be, etc.), par exemple), mais ce peut être un début...

n°216241
darklord
You're welcome
Posté le 18-09-2002 à 12:32:32  profilanswer
 

merci et j'ai ouvert un topic
 
http://forum.hardware.fr/forum2.php3?post=26023&cat=10


---------------
Just because you feel good does not make you right
n°216632
BifaceMcLe​OD
The HighGlandeur
Posté le 18-09-2002 à 18:00:09  profilanswer
 

Désolé, j'avais fumé. Et toucouch a trouvé la vraie raison (signification particulière du '-' pour les intervalles).
 
Au fait, tant que j'y suis, l'expression régulière "[^1234567890-[+]]" est certainement incorrecte car elle doit conserver les crochets...
La bonne doit donc bien être "[^-0-9+]", comme l'a indiqué toucouch (on doit aussi pouvoir écrire "[^-+0-9]" ou "[^+\\-0-9]" )

n°216652
krosso
j'suis à la bourre
Posté le 18-09-2002 à 18:21:07  profilanswer
 

BifaceMcLeOD a écrit a écrit :

La bonne doit donc bien être "[^-0-9+]", comme l'a indiqué toucouch (on doit aussi pouvoir écrire "[^-+0-9]" ou "[^+\\-0-9]" )




 
Oui, c'est bien ça!

Code :
  1. String regex = "[^-+0-9]";

n°217153
El_gringo
Posté le 19-09-2002 à 14:05:14  profilanswer
 

Toucouch a écrit a écrit :

 
Bon, j'arrive après la guerre, mais est-ce-que

Code :
  1. [^-0-9+]


ne marcherait pas mieux (en plus c'est plus simple!)
D'après moi, le problème vient de la place du '-'. En effet, placé entre 2 caractères, il indique la plage de caractères qui s'étend du caractère précédent le '-' au caractère suivant. Ainsi, [0-9] prend tous les caractères de 0 à 9. Si l'on veut inclure le caractères '-' dans une classe de caractères, on place  le '-' en début de liste. Cette explication me semble d'autant plus plausible que les caractères dont les codes ASCII sont situés entre le '+' et le '1' sont: ',' '-' '.' '/' et '0'.
 
Essaie ça et tiens moi au courant STP...




 
hé ouais, t'as surement raison.
Ms l'expression régulière de krosso marchait aussi.
Merci à vous tous !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Pb (surement tout con) avec une expression régulière (tte conne)

 

Sujets relatifs
Gestion des exp reguliere[RESOLU][PHP] question conne
expression réguliere : qui peut m'expliquer ca :[HTML] Chers amis Webmaster, kestion conne aussi.....
[HTML] question toute conne ..voir le XML question toute conne, pour visualiser ss passer par saxon
Un code plus compact, utilisation d'interfaces (surement)[PHP] regular expression : verifier un num de telephone
Expression reguliere ... 
Plus de sujets relatifs à : Pb (surement tout con) avec une expression régulière (tte conne)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR