regex (Pattern) : pb synthaxe - Java - Programmation
Marsh Posté le 04-07-2003 à 11:37:17
si je dis pas de conneris, il n'y a pas de négation dans les regexp (sauf exclusion de caractère)...
Marsh Posté le 04-07-2003 à 11:40:02
LetoII a écrit : et ^(xy)? |
t'as pas le droit de faire ca je crois ...
mais bon, je connais vraiment pas bien :$
Marsh Posté le 04-07-2003 à 11:41:06
benou a écrit : si je dis pas de conneris, il n'y a pas de négation dans les regexp (sauf exclusion de caractère)... |
Argh !
Comment je peux faire ?
(concaténation d'exclusion de caractères ? ...)
Marsh Posté le 04-07-2003 à 11:46:37
Si Si ça ça marche: [^(xy)]
Ce qui donne:
Code :
|
Marsh Posté le 04-07-2003 à 11:47:24
LetoII a écrit : et ^(xy)? |
Code :
|
Là, ca affiche "brebis" (une fois).C'est normal.
Mais avec
Code :
|
ca affiche également "brebis" (une fois) (car exclusion du caractere y OU x) alors que je voudrais deux fois (exclusion de la chaine yx).
Marsh Posté le 04-07-2003 à 11:50:50
pilou50 a écrit :
|
CF ma réponse plus haut
Marsh Posté le 04-07-2003 à 12:02:11
LetoII a écrit : |
ca ne marche pas .
ca affiche qu'une fois brebis alors que ca devrait l'afficher deux fois.
Marsh Posté le 04-07-2003 à 13:03:58
LetoII a écrit : |
Code :
|
Ca n'affiche qu'une fois "brebis" alors que ce message devrait apparaître deux fois.
Marsh Posté le 04-07-2003 à 13:08:58
Effectivement ça marche pas, ça ça marche: "br((x[^y])|([^x]))*is"
Marsh Posté le 04-07-2003 à 16:21:40
Pour clore le débat je dirais qu'il n'existe pas de moyen en UNE expression regulière de faire un "sauf un mot".
Pour t'en tu peux faire un :
Pattern p = Pattern.compile("br(.)*is" );
Ensuite tu recupere l'element du groupe 0 en fait ce qui est autore des parenthese et tu compare à "iy". si c'est faux ta chaine correspond sinon elle ne correspond pas.
Marsh Posté le 04-07-2003 à 16:29:11
phnatomass a écrit : Pour clore le débat je dirais qu'il n'existe pas de moyen en UNE expression regulière de faire un "sauf un mot". |
J'ai donné une solution qui marche en une expression
Marsh Posté le 04-07-2003 à 18:31:47
LetoII a écrit : |
ok, mais si le mot dont tu ne veux pas fait 20 lettres, tu vas e chier
c'estvraiment trop nul qu'il y ait pas de "not" dans les regexp
Marsh Posté le 04-07-2003 à 23:55:37
benou a écrit : |
Pas plus que si tu devais faire l'automate qui corspond à l'expression régulière
Marsh Posté le 05-07-2003 à 00:32:29
LetoII a écrit : |
n'empeche que c'est nul
Marsh Posté le 07-07-2003 à 09:43:07
Cette exception est levée quand je mets :
((<[^!])|([^<]))* (tous les mots sauf ceux qui contiennent "<!" )
à la place de
[^!]* (tous les mots sauf ceux qui contiennent "!" )
Code :
|
Marsh Posté le 07-07-2003 à 11:08:46
belle erreur
Marsh Posté le 07-07-2003 à 11:10:53
ReplyMarsh Posté le 07-07-2003 à 11:15:17
pilou50 a écrit : |
oui
Marsh Posté le 04-07-2003 à 11:28:19
Bonjour,
Je débute dans les regex des pattern et je n'arrive pas à traduire la regle suivante :
"prendre les mots qui commencent par ce mot-préfixe, et qui finissent par ce mot-suffixe, et qui ne contiennent pas ce sous-mot"
-----------
J'arrive seulement a traduire :
"prendre les mots qui commencent par ce mot-préfixe, et qui finissent par ce mot-suffixe, et qui ne contiennent pas ce caractère"
Pattern p = Pattern.compile("br[^y]*is" );
----------------
Si j'écris :
Pattern p = Pattern.compile("br[^yx]*is" );
ca ne marche pas car [^yx] signifie "ne pas prendre y OU x" (alors que je voudrais que ca signifie "ne pas prendre la chaine de caracteres yx"
Merci pour vos conseils!