[RegEx] Aide pour regexp (commence par ... et ne finit pas par ...)

Aide pour regexp (commence par ... et ne finit pas par ...) [RegEx] - Divers - Programmation

Marsh Posté le 19-12-2005 à 16:14:32    

Salut,
 
Je suis une bille en expressions régulières, j'ai bien besoin de votre aide !
 
Je dois écrire uen expression (pour du code Java) sur une chaine de caractère de longueur 4. L'expression doit retourner True si la chaine commence par "FU" et ne termine pas par "FR" ou "RB"
 
J'en suis là : (FU[A-Z0-9]{2})
 
Mais je n'arrive pas à définir la condition nègative "ne termine pas par ..."
 
Merci de votre aide.


Message édité par Lex le 19-12-2005 à 16:54:16
Reply

Marsh Posté le 19-12-2005 à 16:14:32   

Reply

Marsh Posté le 19-12-2005 à 16:32:28    

pourquoi tu coupes pas ton probleme en deux ça serait plus simple:
- comme par FU
- ne se termine pas par FR ou RB ...

Reply

Marsh Posté le 19-12-2005 à 16:45:09    

OK je veux bien :) tu as pas une piste concrete (exemple de code ou autre) ?

Reply

Marsh Posté le 19-12-2005 à 16:47:30    

if ((chaine match expression1) && ! (chaine match expression2))
 
[:pingouino]

Reply

Marsh Posté le 19-12-2005 à 16:50:06    

Ahh ok je vois ce que vous voulez dire ! ;) C'est en effet ce que je comptais faire au début.
 
Mais non, malheureusement, je dois faire le check en une seule fois (la regexp provient d'un champ dans une base de données) donc une seule regexp pour définir le tout !

Reply

Marsh Posté le 19-12-2005 à 17:00:26    

ok alors tiens, une bonne assertion avant négative:

Code :
  1. /FU(?!(FR|RB))/


 
edit: on dit assertion pas insertion


Message édité par anapajari le 19-12-2005 à 17:21:47
Reply

Marsh Posté le 19-12-2005 à 17:17:41    

Merci
 
Malheureusement ça ne marche pas dans mon code Java.
 
   

Code :
  1. String inputText = "FUFU";
  2.     Pattern p = Pattern.compile("FU(?!(FR|RB))" );
  3.     Matcher m = p.matcher(inputText);
  4.     if ( !m.find() )
  5.     {
  6.       System.out.println("Match True" );
  7.     }
  8.     else
  9.     {
  10.       System.out.println("Match False" );
  11.     }


 
en fait j'ai l'impression qu'il me donne false quand il devrait me donner true :lol: edit: non même pas en fait ...


Message édité par Lex le 19-12-2005 à 17:21:04
Reply

Marsh Posté le 19-12-2005 à 17:23:44    

Bon déjà en java je sais pas ce qu'est possible en regex ... Ptêt faut importer le package qui va bien?
En tout cas je viens de vérifier en PERL, ça marche très bien :o
 
Par contre tu feras gaffe tu as un ! dans ton if ...

Reply

Marsh Posté le 19-12-2005 à 17:26:42    

Ouh là merci en effet lol
 
Je crois avoir trouvé la bonne regex, grace à ton aide :

Code :
  1. String inputText = "FUFF";
  2.     String inputPattern = "^FU[A-Z0-9]{2}(?<!(FR|RB))$";
  3.     Pattern p = Pattern.compile(inputPattern);
  4.     Matcher m = p.matcher(inputText);
  5.     if ( m.find() )
  6.     {
  7.       System.out.println("Match True" );
  8.     }
  9.     else
  10.     {
  11.       System.out.println("Match False" );
  12.     }


Message édité par Lex le 19-12-2005 à 17:27:59
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed