1

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

Ólafur Waage
  • 68,817
  • 22
  • 142
  • 198
Anirudh Goel
  • 4,571
  • 19
  • 79
  • 109

2 Answers2

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]+)")
Muhammad Hasan Khan
  • 34,648
  • 16
  • 88
  • 131
0

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.

Anirudh Goel
  • 4,571
  • 19
  • 79
  • 109