comportement inattendu de Regex
Bonjour,
Je m'essaye à regex en C++ et j'ai un comportement bizarre que je ne m'explique pas.
Pour le contexte: Je parcours un fichier LaTeX ligne par ligne. Je recherche les lignes ayant le code include afin de capturer ce qui se trouve entre accolade.
exemple de ligne \include{part/A-initiation} ou encore \include{part/B-autonomie}}]. Notez dans le deuxième cas la double accolade provenant de la fermeture d'une commande initié dans une autre ligne du fichier.
voici mon code regex pour réaliser cette capture
Code:
1 2 3 4 5
| regex pattern { R"(\include\{(.*)(\}+))"}
result = regex_replace("\include{part/A-initiation}", pattern, "$1");
cout << result << endl;
result = regex_replace("\include{part/B-autonomie}}", pattern, "$1");
cout << result << endl; |
qui contre toute attente me donne:
Code:
1 2
| \part/A-initiation
\part/B-autonomie} |
Notez le \ en début de chaque ligne et l'accolade en fin de deuxième ligne.
D’où mes questions:
- Pourquoi mes lignes commence par \?
- Pourquoi la deuxième accolade n'est pas supprimé? Il me semblait que opérateur + était gourmand.
J'en mangerais mon chapeau. :arf: