Pb (surement tout con) avec une expression régulière (tte conne) - Java - Programmation
Marsh Posté le 18-09-2002 à 10:09:56
Ben a priori, je trouve ça logique, puisque tu ne les a pas listés dans ton expression régulière...
Marsh Posté le 18-09-2002 à 10:21:34
C peut être pas standard, mais en Java, [^abc] ça équivaut à n'importe quel caractère exepté a, b, et c.
Marsh Posté le 18-09-2002 à 10:35:02
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?
Marsh Posté le 18-09-2002 à 10:41:42
DarkLord a écrit a écrit : tu es sûr? |
extrait de javadoc :
Character classes |
Marsh Posté le 18-09-2002 à 10:44:14
[^...] c'est un truc standard, ça.
A+,
Marsh Posté le 18-09-2002 à 10:47:54
bin donc tout va bien ...
Marsh Posté le 18-09-2002 à 10:50:07
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 ','
Marsh Posté le 18-09-2002 à 11:03:33
bingo:
Code :
|
Marsh Posté le 18-09-2002 à 11:06:50
a propos qqun as t il une meilleure regex pour représenter une adresse email?
Code :
|
Marsh Posté le 18-09-2002 à 11:11:23
DarkLord a écrit a écrit : a propos qqun as t il une meilleure regex pour représenter une adresse email?
|
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
Marsh Posté le 18-09-2002 à 11:12:34
krosso a écrit a écrit : bingo:
|
Yesss, excellent, merci beaucoup.
Les expression régulières, c puissant, ms du coup, c assez comlpexe à utiliser.
Marsh Posté le 18-09-2002 à 11:27:13
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 |
ça arrache ! Merci
Marsh Posté le 18-09-2002 à 11:37:14
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 ...
Marsh Posté le 18-09-2002 à 11:39:40
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.
Marsh Posté le 18-09-2002 à 11:40:10
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 :
|
Bon, j'arrive après la guerre, mais est-ce-que
Code :
|
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...
Marsh Posté le 18-09-2002 à 11:40:27
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
Marsh Posté le 18-09-2002 à 12:03:24
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 ...
Marsh Posté le 18-09-2002 à 12:30:17
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 :
|
Pas dit que ça détecte tout (domaines étrangers (.de, .be, etc.), par exemple), mais ce peut être un début...
Marsh Posté le 18-09-2002 à 12:32:32
merci et j'ai ouvert un topic
http://forum.hardware.fr/forum2.php3?post=26023&cat=10
Marsh Posté le 18-09-2002 à 18:00:09
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]" )
Marsh Posté le 18-09-2002 à 18:21:07
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 :
|
Marsh Posté le 19-09-2002 à 14:05:14
Toucouch a écrit a écrit : Bon, j'arrive après la guerre, mais est-ce-que
|
hé ouais, t'as surement raison.
Ms l'expression régulière de krosso marchait aussi.
Merci à vous tous !
Marsh Posté le 18-09-2002 à 09:29:15
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 :
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 ?