Greedy vim

October 30, 2006

Bon, cui là, il est juste pour les gens qui ont touché aux regex dans leur vie. Desolé. ^^;Toi tu est un geek bien, tu utilises parfois vim. Et comme tu as aussi joué un peu aux expréssions rationnelles (aka regex) dans ton enfance, tu sais que le quantifieur ’*’ il est gourmand (greedy) : autrement dit il avale autant de caractères qu’il peut dans la chaîne tant qu’il a une chance de le faire (ie. si ça matche toujours à la fin… j’me comprend).

Pour les codeurs perl, ou simplement les curieux qui ont un peu lu la doc. du moteur de regex du langage, c’est facilement modifiable en rajoutant un joli petit point d’intérrogation après le quantifieur glouton, c’est-à-dire :

Bon, ça c’est en perl… Mais dans votre éditeur préféré (si si c’est vim (et puis j’ai dit éditeur, pas OS (chut chut))), ça n’est pas la même chose (ce serait trop simple). D’ailleurs jusqu’à ce matin je n’en avais pas eu besoin, donc je n’avais pas cherché. Mais c’est là dans la doc, en toutes lettres :

        magic   nomagic
  
|/\{-|  \{-n,m} \{-n,m} n to m      as few as possible (*)
  
        \{-n}   \{-n}   n           exactly (*)
  
        \{-n,}  \{-n,}  at least n  as few as possible (*)
  
        \{-,m}  \{-,m}  0 to m      as few as possible (*)
  
        \{-}    \{-}    0 or more   as few as possible (*)
  

C’est la dernière ligne qui nous intéresse. Si si… Oui, j’ai des joies simples, mais je ne suis pas dangereux, promis (vous avez certainement le droit de penser : “sale geek” quand même).