Je cherche un moyen d'effectuer une recherche/remplacement a l'aide de
regexp sur un langage balisé. Comment puis-je faire ?
Mon problème est que je ne peux pas matcher à la fois
[tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un des
deux passe forcément a la trappe selon la 'gourmandise' donné.
Des idées des suggestions ? (non, je prefererais ne pas utiliser un
parseur maison ou un parseur xml/html)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Denis -esp2008-
Bonjour,
Mon problème est que je ne peux pas matcher à la fois [tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un des deux passe forcément a la trappe selon la 'gourmandise' donné.
La réponse est dans la perlfaq6, traduite sur http://www.enstimac.fr/Perl/DocFr/perlfaq6.html
Il faut utiliser le modificateur '?' sur les opérateurs.
Bonne chance,
-- Denis
Bonjour,
Mon problème est que je ne peux pas matcher à la fois
[tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un des
deux passe forcément a la trappe selon la 'gourmandise' donné.
La réponse est dans la perlfaq6, traduite sur
http://www.enstimac.fr/Perl/DocFr/perlfaq6.html
Il faut utiliser le modificateur '?' sur les opérateurs.
Mon problème est que je ne peux pas matcher à la fois [tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un des deux passe forcément a la trappe selon la 'gourmandise' donné.
La réponse est dans la perlfaq6, traduite sur http://www.enstimac.fr/Perl/DocFr/perlfaq6.html
Il faut utiliser le modificateur '?' sur les opérateurs.
Bonne chance,
-- Denis
Jérémy JUST
On Wed, 29 Sep 2004 18:57:08 +0200 Denis -esp2008- wrote:
Mon problème est que je ne peux pas matcher à la fois [tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un des deux passe forcément a la trappe selon la 'gourmandise' donné.
Que veux-tu reconnaître dans chacun des cas?
Si tes cibles sont: [tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag] ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ tu peux utiliser une forme: m:[tag][^[]]*?[/tag]: dans laquelle tu interdis les caractères [ et ] entre les deux balises que tu vises.
Si tu veux matcher autrement, regarde ce document très complet: http://www.enstimac.fr/~vanouden/info/regexp_tutorial.pdf
L'opérateur (?! ) peut peut-être t'être utile pour empêcher certains matches.
Il faut utiliser le modificateur '?' sur les opérateurs.
Je crois que Vincent en était conscient, puisqu'il parle de « gourmandise ».
Mon problème est que je ne peux pas matcher à la fois
[tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un
des deux passe forcément a la trappe selon la 'gourmandise' donné.
Que veux-tu reconnaître dans chacun des cas?
Si tes cibles sont:
[tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag]
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
tu peux utiliser une forme:
m:[tag][^[]]*?[/tag]:
dans laquelle tu interdis les caractères [ et ] entre les deux balises
que tu vises.
Si tu veux matcher autrement, regarde ce document très complet:
http://www.enstimac.fr/~vanouden/info/regexp_tutorial.pdf
L'opérateur (?! ) peut peut-être t'être utile pour empêcher certains
matches.
Il faut utiliser le modificateur '?' sur les opérateurs.
Je crois que Vincent en était conscient, puisqu'il parle de
« gourmandise ».
On Wed, 29 Sep 2004 18:57:08 +0200 Denis -esp2008- wrote:
Mon problème est que je ne peux pas matcher à la fois [tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un des deux passe forcément a la trappe selon la 'gourmandise' donné.
Que veux-tu reconnaître dans chacun des cas?
Si tes cibles sont: [tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag] ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ tu peux utiliser une forme: m:[tag][^[]]*?[/tag]: dans laquelle tu interdis les caractères [ et ] entre les deux balises que tu vises.
Si tu veux matcher autrement, regarde ce document très complet: http://www.enstimac.fr/~vanouden/info/regexp_tutorial.pdf
L'opérateur (?! ) peut peut-être t'être utile pour empêcher certains matches.
Il faut utiliser le modificateur '?' sur les opérateurs.
Je crois que Vincent en était conscient, puisqu'il parle de « gourmandise ».
-- Jérémy JUST
Paul Gaborit
À (at) Wed, 29 Sep 2004 16:59:31 +0200, Vincent LE LIGEOUR écrivait (wrote):
Je cherche un moyen d'effectuer une recherche/remplacement a l'aide de regexp sur un langage balisé. Comment puis-je faire ?
Mon problème est que je ne peux pas matcher à la fois [tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un des deux passe forcément a la trappe selon la 'gourmandise' donné.
Des idées des suggestions ? (non, je prefererais ne pas utiliser un parseur maison ou un parseur xml/html)
Extrait de perlfaq6 :
Historically, Perl regular expressions were not capable of matching balanced text. As of more recent versions of perl including 5.6.1 experimental features have been added that make it possible to do this. Look at the documentation for the (??{ }) construct in recent perlre manual pages to see an example of matching balanced parentheses. Be sure to take special notice of the warnings present in the manual before making use of this feature.
CPAN contains many modules that can be useful for matching text depend- ing on the context. Damian Conway provides some useful patterns in Regexp::Common. The module Text::Balanced provides a general solution to this problem.
Donc, utilisez soit les constructions (??{ }) des regexps soit Text::Balanced...
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Wed, 29 Sep 2004 16:59:31 +0200,
Vincent LE LIGEOUR <leligeour@iie.cnam.fr> écrivait (wrote):
Je cherche un moyen d'effectuer une recherche/remplacement a l'aide de regexp
sur un langage balisé. Comment puis-je faire ?
Mon problème est que je ne peux pas matcher à la fois
[tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un des deux
passe forcément a la trappe selon la 'gourmandise' donné.
Des idées des suggestions ? (non, je prefererais ne pas utiliser un parseur
maison ou un parseur xml/html)
Extrait de perlfaq6 :
Historically, Perl regular expressions were not capable of matching
balanced text. As of more recent versions of perl including 5.6.1
experimental features have been added that make it possible to do this.
Look at the documentation for the (??{ }) construct in recent perlre
manual pages to see an example of matching balanced parentheses. Be
sure to take special notice of the warnings present in the manual
before making use of this feature.
CPAN contains many modules that can be useful for matching text depend-
ing on the context. Damian Conway provides some useful patterns in
Regexp::Common. The module Text::Balanced provides a general solution
to this problem.
Donc, utilisez soit les constructions (??{ }) des regexps soit
Text::Balanced...
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) Wed, 29 Sep 2004 16:59:31 +0200, Vincent LE LIGEOUR écrivait (wrote):
Je cherche un moyen d'effectuer une recherche/remplacement a l'aide de regexp sur un langage balisé. Comment puis-je faire ?
Mon problème est que je ne peux pas matcher à la fois [tag][tag]toto[/tag][/tag] et [tag]toto[/tag][tag]toto[/tag], l'un des deux passe forcément a la trappe selon la 'gourmandise' donné.
Des idées des suggestions ? (non, je prefererais ne pas utiliser un parseur maison ou un parseur xml/html)
Extrait de perlfaq6 :
Historically, Perl regular expressions were not capable of matching balanced text. As of more recent versions of perl including 5.6.1 experimental features have been added that make it possible to do this. Look at the documentation for the (??{ }) construct in recent perlre manual pages to see an example of matching balanced parentheses. Be sure to take special notice of the warnings present in the manual before making use of this feature.
CPAN contains many modules that can be useful for matching text depend- ing on the context. Damian Conway provides some useful patterns in Regexp::Common. The module Text::Balanced provides a general solution to this problem.
Donc, utilisez soit les constructions (??{ }) des regexps soit Text::Balanced...
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>