Salut,
Il va te falloir splitter la chaîne sur chaque virgule, et ensuite vérifier chaque élément. Tu n'es pas obligé d'utiliser les RE pour ça, mais s'il t'en faut une, je pense à celle là: ^\s?((?:[a-zA-Z]| (?=\w)){2,})\s?$
- ^ début de ligne obligatoire pour éviter de matcher au milieu d'une expression (genre "aa24 a", sans ^ matchera le 'a' final)
- \s? : on accepte un espace en début de mot clé, mais il n'est pas obligatoire et n'est pas capturé (suivant ton dernier exemple, mais contraire à la règle du premier message, ce qui va dans la lignée de ce qu'à dit FlorentG)
- ((?:[a-zA-Z]| (?=\w)){2,}): Après, on capture au minimum 2 caractères qui répond à cette règle: tout caractère ou un espace suivi d'au moins un caractère
- \s? on accepte finalement un éventuel espace non capturé juste avant la fin de ligne (cas de "ab " qui ne serait pas capturé à cause de l'espace et de la règle précédente)
- $ : fin de ligne obligatoire (cf point précédent)
Jeu sur lequel j'ai testé:
Citation :
aaa a aaaa aa aa a52 ab a b a b c ba
|
Et les matches sont:
Citation :
aaa a aaaa aa aa ab a a b ba
|
Voilà, je te garantis pas qu'elle n'est pas buggée, je suis pas un guru de ces trucs là, donc teste intensivement avec ton contexte
Edit: ptite correction sur l'explication fouillis...
Message édité par IrmatDen le 15-12-2007 à 16:04:09