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
qui contre toute attente me donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Notez le \ en début de chaque ligne et l'accolade en fin de deuxième ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2\part/A-initiation \part/B-autonomie}
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.![]()
Partager