Bonjour,
J'ai une chaine de caractère au format : 'Q(chaine1) M(chaine2)'
Est il possible de récupérer facilement chaine1 en utilisant les expressions régulière?
Merci d'avance!
Bonjour,
J'ai une chaine de caractère au format : 'Q(chaine1) M(chaine2)'
Est il possible de récupérer facilement chaine1 en utilisant les expressions régulière?
Merci d'avance!
Bien sûr, en utilisant les références arrières. Je te conseille de lire l'excellent cours de Sylvain Lhullier, qui traite dans la partie 10 des regex.
Fais des essais et on t'aidera à rectifier le tir si besoin est.
Voila ce que ca donne , avec toujours un bug :
J'obtiens 'chaine1)' , la parenthese de fin traine toujours dans la chaine....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 my $test ="Q(chaine1) S(chaine2)"; if($test =~ /Q/i){ my ($a,$b) = split(/\s/,$test); $a =~ /\((\w+\))$/; my $temp= $1; }
EDIT ::: J'avais juste un probleme de ")" mal placée ......
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 my $test ="Q(chaine1) S(chaine2)"; if($test =~ /Q/i){ my ($a,$b) = split(/\s/,$test); $a =~ /\((\w+)\)$/; my $temp= $1; }
Pas loin, avec un quantificateur non gourmand ça devrait passer
Allez, je te donne une solution en une regex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $test =~ m/Q\((\w+?)\)/gi
Merci beaucoup !!
Dernière question sur le sujet : la chaine que j'ai à chercher contient un caractère "é". Est ce que cela va poser problème de le faire comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 my $chaine="En cours d\'exécution"; foreach my $ligne (@list) { if($ligne =~ /$chaine/o){ ............
Merci d'avance!
Et bien... Ca dépend
Ca dépend notamment de l'encodage des caractères du fichier dans lequel tu récupères tes lignes et de l'encodage de ton fichier. Donc ça peut poser problème oui...
Partager