问题
I have a regex where
%word% can occur multiple times, separated by a "<"
%word% is defined as ".*?"|[a-zA-Z]+
so i wrote
(".*"|[a-zA-Z]+)([<](".*"|[a-zA-Z]+))*
Is there any way i can shrink it using capturing groups?
(".*"|[a-zA-Z]+)([<]\1)*,
But i don't think \1
can be used as it'd mean repeat the first capture, as i would not know what was captured as it can be a quoted string or a word.
Any thing similar i can use to refer matching the previously written group. I'm working in C#.
回答1:
using String.Format to avoid repetition and no there is no way to repeat the regex group literally
String.Format("{0}([<]{0})*", @"("".*""|[a-zA-Z]+)")
回答2:
As the support is not there yet for the feature, i made a string replacer, where i wrote the specific words i need to replaced by regex using %% and then wrote the program to replace it by the regular expression defined for the text.
来源:https://stackoverflow.com/questions/638113/refering-to-already-existing-group-in-regex-c-sharp