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 #.

Était-ce utile?

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]+)")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top