Page 1 sur 1

Expression régulière

Posté : 18 mars 2008, 17:01
par Invité
Bonjour,

j'ai un texte de ce type :

Code : Tout sélectionner

Bienvenue [Premier Test.Champ1], Nous sommes dans le [Premier Test.Champ Numero 2] Il va falloir [Premier Test.Champ 3 Calc]
Je voudrais récupérer les valeurs suivantes via une expression régulières :
Champ1, Champ Numero 2, Champ 3 Calc

sachant que la valeur juste après le signe "[" sera toujours "Premier Test."

Vient ensuite une chaine de caractères (avec des lettres, espaces, points, chiffres, tirets, underscore.)

J'ai un début d'expression que voici qui me permet de capturer le signe "[".

Code : Tout sélectionner

^[\[]
Pouvez-vous m'aider à compléter mon expression svp ?

Merci bien !

Posté : 18 mars 2008, 17:31
par Ryle
Le caractère ^ désigne le début de la chaine, or dans ton cas, le motif que tu recherche n'est pas obligatoirement au début de la chaine, mais peut être répété plusieurs fois à l'intérieur de celle-ci.

1. Pour détecter un crochet [ dans une expression régulière, il faut effectivement le backslasher.

Code : Tout sélectionner

#\[#
2. Ce que tu cherches c'est un crochet suivit de la chaine "Premier Test.". Le point étant un caractère spécial, il faut également le protéger

Code : Tout sélectionner

#\[Premier Test\.#
3. Puis tu veux capturer tout ce qui suit. Pour capturer un élément on utilise les parenthèses, le ".*" permet de désigner n'importe quel caractère, répété de 0 à n fois

Code : Tout sélectionner

#\[Premier Test\.(.*)#
4. Jusqu'au prochain crochet qu'il faudra également protéger.

Code : Tout sélectionner

#\[Premier Test\.(.*)\]#
Reste plus qu'à affiner en jouant avec la casse (majuscule/minuscule), avec les caractères autorisés au lieu du .*, ainsi qu'avec l'option ungreedy si nécessaire (pour éviter qu'il n'étende l'expression jusqu'au tout dernier crochet) :)

Posté : 20 mars 2008, 10:12
par Invité
Merci pour ces explications... Je vais essayer d'optimiser !