• [^] # Re: Mince

    Posté par . En réponse au message Mini parser. Évalué à 2.

    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"