J'ai pas testé, je suis pas un pro des regexp, mais j'y pense alors je vous en fais part:
Le ".*" est "greedy" et donc va matcher sur tous les caractères jusqu'en fin de fichier; après, si la regexp se rend compte qu'il lui manque un truc pour s'appliquer au texte fourni, comme le tag fermant, elle va reessayer en allant moins loin.
Donc il serait peut-être plus efficace (d'un point de vue consommation de ressource) d'utiliser ".*?" ("minimal matching") pour le nom du tag et pour le texte entre les tags.
Peut-être même que c'est nécessaire si jamais ton fichier peut réutiliser le même tag:
<item1> toto </item1>
<item2> plop </item2>
<item1> coin </item1>
va matcher "toto </item1> <item2> plop </item2> <item1> coin " avec ".*" et "toto" + "coin" avec ".*?"
(ou pas, selon que tu configure le <> de perl pour traiter ligne par ligne, ou tout le fichier d'un coup)
$ man perlre
"The pattern really, really wants to succeed"
[^] # Re: Mince
Posté par daggett . En réponse au message Mini parser. Évalué à 2.
Le ".*" est "greedy" et donc va matcher sur tous les caractères jusqu'en fin de fichier; après, si la regexp se rend compte qu'il lui manque un truc pour s'appliquer au texte fourni, comme le tag fermant, elle va reessayer en allant moins loin.
Donc il serait peut-être plus efficace (d'un point de vue consommation de ressource) d'utiliser ".*?" ("minimal matching") pour le nom du tag et pour le texte entre les tags.
Peut-être même que c'est nécessaire si jamais ton fichier peut réutiliser le même tag:
<item1> toto </item1>
<item2> plop </item2>
<item1> coin </item1>
va matcher "toto </item1> <item2> plop </item2> <item1> coin " avec ".*" et "toto" + "coin" avec ".*?"
(ou pas, selon que tu configure le <> de perl pour traiter ligne par ligne, ou tout le fichier d'un coup)
$ man perlre
"The pattern really, really wants to succeed"