[Perl] ?==?utf-8?q? ?==?utf-8?q? problème mise au point regexp
eduval@ligfy.fr
eduval at ligfy.fr
Ven 21 Avr 16:47:47 CEST 2017
Je n'ai pas pu tester de suite cette regexp. Elle ne fonctionnait pas correctement, mais Yon, merci tu m'as aidé à mettre ce qui suit au point.
Pour info, le but étant d'anonymiser des logs (remplacer les valeurs des query string par des 'xxx').
Cette solution fonctionne correctement:
Version Perl: s/([\?&])([^\"])([^\?&=*]+)=([^&\"*]+)/${1}${2}${3}=xxx/gx;
Version Syslog-ng version 3.4 moteur PCRE:
rewrite rule_anonymisation {
subst(
"([\?&])([^\"])([^\?&=*]+)=([^&\"*]+)",
"${1}${2}${3}=xxx",
value("MESSAGE"),
type("pcre"),
flags("global" "ignore-case" "store-matches" "glob")
);
};
Le Lundi, Mars 27, 2017 20:17 CEST, Eric DUVAL <eduval at ligfy.fr> a écrit:
> Merci Yon, je teste ça demain.
>
> Le 27/03/2017 à 19:56, Yon a écrit :
> > On Mon, Mar 27, 2017 at 07:39:32PM +0200, Eric DUVAL wrote:
> >> Bonjour,
> >>
> >> Je sors un peu du contexte purement perl, j'en suis désolé, perl est mon ami
> >> pour la mise au point de cette regexp par contre le moteur pcre de syslog-ng
> >> ne l'a pas été! ;-)
> >>
> >> Le moteur PCRE dans syslog-ng ne réagit de la même façon que PERL.
> >> Du coup impossible de mettre au point correctement la règle.
> > Ah, peut-être que les regexps syslog-ng ne connaissent pas les
> > assertions "look-around". Peut-être que ceci (à adaptations près, je
> > sais pas comment sont les regexp syslog-ng) marcherait :
> >
> > s{([?&]) ([^?&=]+) = ([^&"]+)}{$1$2=xxx}xg
> >
> > l'inconvénient c'est que j'ai peur qu'il y ait plus de chances que ça
> > modifie potentielement des trucs en trop. Peut-être qu'il vaut mieux
> > quelques précautions de plus dans les classes de charactères en
> > interdisant les espaces :
> >
> > s{([?&]) ([^?&=\s]+) = ([^&"\s]+)}{$1$2=xxx}xg
> >
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl
Plus d'informations sur la liste de diffusion Perl