OVH Cloud OVH Cloud

Regexp multiligne

2 réponses
Avatar
Arno
Bonjour,

J'ai un petit problème de regexp lorsque la chaine de caractères est sur
plusieurs lignes, je n'ai pas le résultats souhaité :

#!/usr/bin/perl

$chaine = "<script> a=b </script> toto <script> a=b </script>";
$chaine =~ s/<script>.*?<\/script>//gi;
print "Reponse:\n'".$chaine."'\n\n";

$chaine = "<script>
a=b
</script> toto <script>
a=b </script>";
$chaine =~ s/<script>.*?<\/script>//gi;
print "Reponse:\n'".$chaine."'\n\n";


J'obtient :
Reponse:
' toto '

Reponse:
'<script>
a=b
</script> toto <script>
a=b </script>'


A première vue, le matching marche ligne par ligne. Je voulais savoir si il
y avais une option qui permettrait de faire cella en précisant à perl de ne
pas prendre en compte les retour à la ligne.

Par contre je ne peut pas supprimer les retours à la ligne car ceux-ci me
servent par la suite.

--
Arno - Pour le mail : http://cerbermail.com/?P5oJnDlxNt

2 réponses

Avatar
Laurent Wacrenier
Arno écrit:
J'ai un petit problème de regexp lorsque la chaine de caractères est sur
plusieurs lignes, je n'ai pas le résultats souhaité :


perldoc perlre

C'est expliqué au début.

Avatar
dominique
Arno wrote:
Bonjour,

J'ai un petit problème de regexp lorsque la chaine de caractères est sur
plusieurs lignes, je n'ai pas le résultats souhaité :

#!/usr/bin/perl

$chaine = "<script> a=b </script> toto <script> a=b </script>";
$chaine =~ s/<script>.*?</script>//gi;
print "Reponse:n'".$chaine."'nn";

$chaine = "<script>
a=b
</script> toto <script>
a=b </script>";
$chaine =~ s/<script>.*?</script>//gi;
print "Reponse:n'".$chaine."'nn";


essaie avec $chaine =~ s/<script>.*?</script>//gsi

--
Dom