Vous avez été nombreux à répondre à ce petit jeu et je suis content de déclarer vainqueur Emmanuel Schaffner.

Bien sûr, il y avait un piège.

Tous avez bien vu la nécessité des lookbehind (?<=) et lookahead (?=) pour isoler les chevrons ouvrant et fermant.

Plusieurs ont vu l’utilité d’utiliser \s (espace quelconque) après le chevron ouvrant (?<=«\s) et avant le chevron fermant (?=\s»). J’avais en effet laissé cette espace simple.

L’avidité du métacaractère + n’a pas toujours été considérée. Et il fallait réfréner l’apétit du + avec ?, d’où : .+? pour la chaîne entre les chevrons.

Mais qui a remarqué le saut de ligne forcé que j’avais (insidieusement) glissé ici, dans une chaîne entre guillemets ?

D’où le problème avec le métacaractère “Caractère quelconque” qui ne reconnaît pas les sauts, y compris celui-ci. La rechercher (?<=«\s).+?(?=\s») ne sélectionne donc que deux chaînes : 

Trois solutions sont envisageables :

  1. Activer le mode ligne par ligne avec la touche de modification (?s) qui a pour effet de “neutraliser” les sauts.
  2. Utiliser le caractère combinatoire \X (non renseigné) à la place du “point”. Ils ont les mêmes propriétés, à cette différence près que \X est insensible à la reconnaissance ligne par ligne.
  3. Utiliser un jeu de caractère négatif [^ ] avec le chevron fermant à l’intérieur [^»]+.
  4. Cette dernière solution a été envisagée par Emmanuel Schaffner.

Merci à tous pour votre participation et à Martinho da Gloria pour la licence du plug-in Multi-Find/Change.