ссылаясь на уже существующую группу в регулярном выражении, c # - PullRequest
1 голос
/ 12 марта 2009

У меня есть регулярное выражение, где

%word% can occur multiple times, separated by a "<"

% word% определяется как ".*?"|[a-zA-Z]+ так что я написал

(".*"|[a-zA-Z]+)([<](".*"|[a-zA-Z]+))*

Можно ли как-нибудь сжать его с помощью групп захвата?

(".*"|[a-zA-Z]+)([<]\1)*, 

Но я не думаю, что можно использовать \1, поскольку это означало бы повторение первого захвата, поскольку я не знал бы, что было захвачено, поскольку это может быть строка в кавычках или слово.

Любая похожая вещь, которую я могу использовать, чтобы ссылаться на ранее написанную группу. Я работаю в C #.

Ответы [ 2 ]

1 голос
/ 12 марта 2009

с использованием String.Format, чтобы избежать повторения, и нет никакого способа повторить группу регулярных выражений буквально

String.Format("{0}([<]{0})*", @"("".*""|[a-zA-Z]+)")
0 голосов
/ 18 марта 2009

Поскольку поддержки этой функции пока нет, я сделал заменитель строки, где я написал конкретные слова, которые нужно заменить на регулярное выражение, используя %%, а затем написал программу, чтобы заменить ее регулярным выражением, определенным для текст.

...