Je veux faire correspondre une balise optionnelle à la fin d'une ligne de texte.
Exemple de texte d'entrée :
The quick brown fox jumps over the lazy dog {tag}
Je veux faire correspondre la partie entre accolades et créer une référence arrière.
Ma requête ressemble à ceci :
^.*(\{\w+\})?
(quelque peu simplifié, je fais également correspondre les parties avant l'étiquette) :
Il fait correspondre les lignes correctement (avec et sans la balise) mais ne crée pas de référence arrière à la balise.
Si je supprime le caractère '?', la regex est donc :
^.*(\{\w+\})
Il crée une référence arrière à la balise mais ne fait pas correspondre les lignes sans la balise.
J'ai compris de http://www.regular-expressions.info/refadv.html que l'opérateur optionnel n'affecterait pas la référence arrière :
Les crochets ronds regroupent les expressions rationnelles entre eux. Elles capturent le texte correspondant à la regex qu'elles contiennent et qui peut être réutilisé dans une référence arrière, et elles vous permettent d'appliquer des opérateurs de regex à l'ensemble de la regex groupée.
mais j'ai dû mal comprendre quelque chose.
Comment rendre la partie "tag" facultative et créer une référence arrière lorsqu'elle existe ?