faisant référence à un groupe déjà existant dans regex, c #
Question
j'ai une regex où
%word% can occur multiple times, separated by a "<"
% mot% est défini comme ". *?" | [a-zA-Z] +
donc j'ai écrit
(".*"|[a-zA-Z]+)([<](".*"|[a-zA-Z]+))*
Existe-t-il un moyen de le réduire en utilisant des groupes de capture?
(".*"|[a-zA-Z]+)([<]\1)*,
Mais je ne pense pas que \ 1
puisse être utilisé car cela signifierait de répéter la première capture, car je ne saurais pas ce qui a été capturé car il peut s'agir d'une chaîne entre guillemets ou d'un mot.
Toute chose similaire que je peux utiliser pour faire référence à la correspondance du groupe écrit précédemment. Je travaille en C #.
La solution 2
Comme la prise en charge n’est pas encore disponible, j’ai créé un substitut de chaîne, dans lequel j’ai écrit les mots spécifiques que je dois remplacer par regex en utilisant %%, puis j’ai écrit le programme pour le remplacer par l’expression régulière définie pour le fichier. texte.
Autres conseils
en utilisant String.Format pour éviter la répétition et non, il n'y a aucun moyen de répéter le groupe de regex littéralement
String.Format("{0}([<]{0})*", @"("".*""|[a-zA-Z]+)")