Regex : je ne m'en sors pas :( [java] - Java - Programmation
Marsh Posté le 23-05-2004 à 16:24:59
doit vraiment y avoir un gros pb :
j'ai repris l'exemple de la javadoc :
Citation : Current REGEX is: \bdog\b |
alors si j'ecris ca :
Code :
|
et je me mange : java.lang.IllegalStateException: No match found
Marsh Posté le 23-05-2004 à 19:55:07
DarkLord a écrit : IDEA + le plugin regex roxxor |
merci de lui envoiyer ta clef d'enregistrement par MP
Marsh Posté le 23-05-2004 à 20:05:45
T'es au courant que les \ faut les escaper dans les chaînes de caractères ?
Donc ton pattern, c'est "\\bdog\\b"
Sinon, merci de suivre les conventions de codage Java, au moins pour tes variables (les _, argl). Vala
Marsh Posté le 24-05-2004 à 04:06:00
Taiche a écrit : T'es au courant que les \ faut les escaper dans les chaînes de caractères ? |
c'est peut etre pour ca ...
qu'est ce qu'elles ont mes conventions ?
classe : MaClasse
fonction maFonction ?
faut faire un truc special pour les variables
Marsh Posté le 24-05-2004 à 10:32:47
ReplyMarsh Posté le 24-05-2004 à 12:51:16
Perchut2 a écrit : |
Ouais, maVariable et pas ma_variable
Marsh Posté le 24-05-2004 à 12:59:30
faudra quand meme qu'on m'explique l'interet des regex pour une connerie comme ça
Marsh Posté le 24-05-2004 à 13:00:40
the real moins moins a écrit : faudra quand meme qu'on m'explique l'interet des regex pour une connerie comme ça |
être à la mode et donner raison aux "java sapu sarame" ?
Marsh Posté le 24-05-2004 à 13:02:16
ha, tiens, nraynaud! je me disais aussi.
Marsh Posté le 24-05-2004 à 13:02:26
Taiche a écrit : T'es au courant que les \ faut les escaper dans les chaînes de caractères ? |
N'importe nawak :
\b, c'est une coupure de mot, justement.
Avec \bdog\b, il va chercher le mot 'dog' -> ne pas reconnaître doggy, par exemple.
Avec \\bdog\\b, il va reconnaître "\bdog\`b" : le premier \ escape le second, et donc "\b" perd son méta-sens => le 'b' est reconnu tel quel.
Marsh Posté le 24-05-2004 à 13:03:27
ReplyMarsh Posté le 24-05-2004 à 13:04:00
nraynaud a écrit : être à la mode et donner raison aux "java sapu sarame" ? |
non, non, mais l'autre solution, c'était d'envoyer un mail à l'adresse avec Javamail, et d'attendre le mail delivery failure...Et c'est long, alors voila...
Marsh Posté le 24-05-2004 à 13:05:15
the real moins moins a écrit : euh non. |
+1 avec le non de --
Marsh Posté le 24-05-2004 à 13:05:36
tiens, en plus c'est faux ce qu'il est en train de faire.
Marsh Posté le 24-05-2004 à 13:07:01
gfive a écrit : N'importe nawak : |
Rendors-toi
Sérieusement, je sais ce que tu veux dire mais là non, spa comme ça que ça marche. Le gars qui veut détecter une tabulation dans une chaîne, il emploiera comme Pattern "\\t" et non "\t" qui sera lui interprété par le compilo comme le caractère de tabulation et n'aura donc aucun effet au runtime. Extrait de la javadoc de Pattern :
Citation : The string literal "\(hello\)" is illegal and leads to a compile-time error; in order to match the string (hello) the string literal "\\(hello\\)" must be used. |
Vala.
EDIT : ah ba tiens, toujours dans la javadoc, pile poil c'qui nous intéresse et une ligne avant mon quote précédent :
Citation : The string literal "\b", for example, matches a single backspace character when interpreted as a regular expression, while "\\b" matches a word boundary. |
Marsh Posté le 24-05-2004 à 13:14:20
Taiche a écrit : Rendors-toi |
Je suis perplexe....mais effectivement, je me suis sans doute mis dedans sur ce coup là.
Sinon, pour le problème de Perchut, un RTFM suffit :
Code :
|
donc, si tu as pas appellé 'matches', ben 'group' ne renverra rien, si j'ai tout bien compris (mais bon, on sait jamais.. )
Marsh Posté le 24-05-2004 à 13:15:28
gfive a écrit : Je suis perplexe....mais effectivement, je me suis sans doute mis dedans sur ce coup là. |
Ba vois mon EDIT, ça flinguera tous tes soupçons
Perso j'y ai eu droit donc j'fais gaffe
Marsh Posté le 24-05-2004 à 13:22:52
je suis le seul à n'avoir jamais utilisé les regexes en java ici ?
et tout le mond s'en fout que ce garçon est en train de se planter dans ce qu'il veut faire correspondre ?
Marsh Posté le 24-05-2004 à 13:23:24
C'est quand même un peu capillotracté, je trouve! Enfin, sinon, group() renvoie la chaîne complète. Pour avoir le premier 'groupe', après avoir appellé 'matches', il faut appeller "group(1)", ce qui me plonge dans des abîmes d'inconpréhension, mais ça doit être parce que je fais du Perl en ce moment.
Marsh Posté le 24-05-2004 à 13:24:11
nraynaud a écrit : je suis le seul à n'avoir jamais utilisé les regexes en java ici ? |
moi j'ai pas encore utilisé celles du jdk1.4. Par contre j'ai déjà utilisé regexp et oro (de jakarta), mais pas pour ce genre de besoin
Marsh Posté le 24-05-2004 à 13:26:39
nraynaud a écrit : je suis le seul à n'avoir jamais utilisé les regexes en java ici ? |
J'en sais rien et à la limite j'm'en fous ; perso j'ai dû le faire 2-3 fois parce que ça me semblait plus facile que d'y aller à grands coups de indexOf pénibles. Maintenat, "c'est ton choix"
nraynaud a écrit : |
Bin vas-y, dis-y comment faire et pis c'est tout. J'le fais pas passke ça me saoûle de parser de la regexp mais si t'as envie te gêne pas
Marsh Posté le 24-05-2004 à 13:28:48
Taiche a écrit : |
Aggressif, agressif (y'a un ou deux G?? Un affreux doute m'assaille)
Zen, messieurs, zen!
Il fait beau, la lunditude de la journée est assez pénible en soi pour ne pas en rajouter!
Marsh Posté le 24-05-2004 à 13:30:36
Taiche a écrit : Bin vas-y, dis-y comment faire et pis c'est tout. J'le fais pas passke ça me saoûle de parser de la regexp mais si t'as envie te gêne pas |
nan, mais j'ai au moins un mail dans ma boite qui a :
Citation : Return-Path: <> |
et je suis pas sûr que les <> sont obligatoire, mais j'ai la flemme de lire la RFC pour quelqu'un qui a déjà du mal à lire les javadocs.
Marsh Posté le 24-05-2004 à 13:33:53
Surtout qu'il y a de merveilleuses API Javamail qui doivent faire tout le boulot.
Marsh Posté le 24-05-2004 à 13:37:17
gfive a écrit : Aggressif, agressif (y'a un ou deux G?? Un affreux doute m'assaille) |
T'inquiète, c'est nraynaud, il en a vu d'autres depuis hier Pis j'ai mis un de bon aloi.
Marsh Posté le 24-05-2004 à 13:39:53
surtout que je lui ai pas dit comment faire, vu qu'une regex c'est pas adapté à ce cas.
En réalité, je suis toujours à la recherche d'un cas où les regexes sont adaptées.
Marsh Posté le 24-05-2004 à 13:44:17
nraynaud : j'en ai un! Vérification du format des références de docs peugeot.
Sauf que c'est tellement à la con, que personne a encore réussi à écrire un pattern qui couvre tous les cas particuliers!
Marsh Posté le 24-05-2004 à 13:46:21
gfive a écrit : nraynaud : j'en ai un! Vérification du format des références de docs peugeot. |
donc il faut utiliser un lexer si c'est trop bordélique. C'est bien plus efficace
Marsh Posté le 24-05-2004 à 13:48:06
bah, en fait, on a décidé qu'ils allaient se démerder avec leur nomenclature débile..... Flemme inside!
Marsh Posté le 24-05-2004 à 14:12:42
dans mon cas je m'en sers pour permettre pour de la config. ex : mapping d'url
Marsh Posté le 24-05-2004 à 14:23:38
benou a écrit : dans mon cas je m'en sers pour permettre pour de la config. ex : mapping d'url |
ah oué ?
depuis que j'ai vu une alerte sur bugtraq à propos de rewrite, je suis parano par rapport à cette idée.
Marsh Posté le 24-05-2004 à 14:24:22
nraynaud a écrit : depuis que j'ai vu une alerte sur bugtraq à propos de rewrite, je suis parano par rapport à cette idée. |
hein ?
Marsh Posté le 24-05-2004 à 14:27:49
mod_rewrite
le machin d'apache pour changer les URLs, je me trompe de nom peut-être.
Marsh Posté le 24-05-2004 à 14:30:21
nraynaud a écrit : mod_rewrite |
je connais pas bien la config apache ...
dans mon cas ca sert par exemple à associer des produits payants à certaines url (genre un répértoire, un fichier fichier html, etc ...). Ca a l'avantage d'être très flexible ...
Donc c'est juste un test de matching ... rien de bien méchant
Marsh Posté le 24-05-2004 à 14:33:12
benou a écrit : je connais pas bien la config apache ... |
oué c'est pareil, il expliquaient que pour les répertoires, il faut pas oublier que le / final est optionnel et en tenir compte dans la regex car ils le feront pas pour toi et si tu planques un répertoire avec ça, il y a un risque d'accès quand même.
C'est pourquoi je suis *pour* les choses sémantiques, c'est plus clair et moins risqué.
Marsh Posté le 27-05-2004 à 21:25:15
nraynaud a écrit : En réalité, je suis toujours à la recherche d'un cas où les regexes sont adaptées. |
j'ai bossé sur un moteur d'enrichissement (création de fils) et de correction (modifs de text()) de contenu XML basé sur les regexp. (pour de la publication de documents)
ça marchait plutôt bien sans être trop ramant.
le user créait une liste d'actions à opérer sur le fichier XML
exemple: dans "//p[type='1']" : corriger "[xX][mM][lL]" par "XML" histoire d'unifier et remplacer "java.sun.com" par "<link url='http://java.sun.com'>java.sun.com</link>"
on lancait le moteur, je créais mon ensemble de règles (Pattern compilés), les patterns foireux étaient mis dehors, et je parsais le document pour appliquer les actions...
c'était bien cool
je m'étais même amusé à écrire des méthodes de transformations genre toUpperCase(), ...
c'est-y-pas un bel exemple d'application des reg exp ?
Marsh Posté le 27-05-2004 à 21:34:29
TBone a écrit : |
non, par contre, un bel exemple d'utilisation d'un outil genre JLex
Marsh Posté le 23-05-2004 à 15:41:14
je cherche a parser un header de mail, soit :
Return-Path: <bibi.bubulle@free.fr>
Delivered-To: online.fr-perchut2@free.fr
blabla...
je voudrais recuperer par exemple l'adresse qu'il y a dans le return path, donc :
et je me mange invariablement
java.lang.IllegalStateException: No match found
j'ai essayé toutes les combinaisons possibles, j'ai du oublier un truc...
please help