1

我有一个正则表达式

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

%word% 被定义为".*?"|[a-zA-Z]+ 我写的

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

有什么办法可以使用捕获组缩小它?

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

但我不认为\1可以使用它,因为它意味着重复第一次捕获,因为我不知道捕获了什么,因为它可以是带引号的字符串或单词。

任何类似的东西我都可以用来指代匹配先前编写的组。我在 C# 中工作。

4

2 回答 2

1

使用 String.Format 来避免重复,并且没有办法从字面上重复正则表达式组

String.Format("{0}([<]{0})*", @"("".*""|[a-zA-Z]+)")
于 2009-03-12T11:26:36.197 回答
0

由于该功能尚不支持,我制作了一个字符串替换器,在其中我使用 %% 编写了我需要用正则表达式替换的特定单词,然后编写了程序用为文本定义的正则表达式替换它。

于 2009-03-18T10:15:31.147 回答