URL: https://linuxfr.org/forums/programmation-perl/posts/demande-daide-sur-regex-dans-pmwiki Title: demande d'aide sur regex dans pmwiki Authors: B16F4RV4RD1N Date: 2009年05月06日T20:58:30+02:00 Tags: Score: 0 bonsoir, je suis en train de réaliser une recette pour pouvoir inclure la syntaxe txt2tags à l'intérieur de pmwiki : [http://pmwiki.org/wiki/Cookbook/Txt2tags](http://pmwiki.org/wiki/Cookbook/Txt2tags) Cela ne fonctionne pas trop mal, mais je bloque sur certaines parties, notamment pour faire des remplacements avec des regex sur des zones de texte s'étendant sur plusieurs lignes. Dans ma recette, j'ai cela : Markup ('txt2tags_verbatimline' , 'directives', '/``` (.*?)/', "<:pre,1>1ドル"); Ce qui permet d'ajouter la balise PRE à tout texte compris entre 2 `, par exemple ``Partie en monospace`` Cela fonctionne correctement. Maintenant j'essaye d'implémenter une notation similaire, qui permet d'ajouter la balise PRE à une zone de texte complète, par exemple ``` Partie qui sera en zone PRE et qui gardera les retours à la ligne ``` Malheureusement, ce code ne fait pas l'affaire : Markup ('txt2tags_verbatim' , 'directives', '/```(.*?)```/s', "<:pre,1>1ドル"); ni celui-là : Markup ('txt2tags_verbatim' , 'directives', '/```(.*?^$)```/m', "<:pre,1>1ドル"); Naïvement j'ai tenté : Markup ('txt2tags_verbatim' , 'directives', '/```(.*?\n)```/s', "<:pre,1>1ドル"); (une autre recette contenait ce genre de code, avec un \n) mais ce n'est pas mieux. La zone de texte n'est pas du tout parsée et le code reste identique dans l'affichage html. J'ai regardé la notice dans : [http://www.pmwiki.org/wiki/PmWiki/CustomMarkup](http://www.pmwiki.org/wiki/PmWiki/CustomMarkup) Qui indique bien : > It appears that (.*?) does not match newlines in these functions, making the above example inoperable if the text to be wrappen in < em> contains new lines. If you include the "s" modifier on the regular expression then the dot (.) will match newlines. Thus your regular expression will be "/STUFF(.*?)/s". That s at the very end is what you are looking for. If you start getting into multi-line regexes you may be forced to look at the m option as well - let's anchors (^ and $) match not begin/end of strings but also begin/end of lines (i.e., right before/after a newline). Je ne comprends pas la partie : "Thus your regular expression will be "/STUFF(.*?)/s". That s at the very end is what you are looking for."> / Pourquoi est-ce que c'est indiqué que ce n'est pas pas ce qu'on recherche ? Sauriez-vous comment corriger cette regex ? Merci d'avance. (je poste cela dans la partie programmation.perl vu que ce sont des regex comme on trouve dans perl...)