如何将嵌套表达式的内部表达式与正则表达式匹配?

时间:2014-11-25 01:57:11

标签: c# regex

我在c#

上得到了这段代码

这有效:

string code = "dqwdSTART12sdaSTART12312ENDsdfSTARTasdsaENDasdaENDqwe";
string pattern = "START[^(START)(END)]*END";

但不是这样:

string code = "dqwdstart12sdastart12312endsdfstartasdsaendasdaendqwe";
string pattern = "start[^(start)(end)]*end";

我该如何进行比赛?

(最好是c#)

2 个答案:

答案 0 :(得分:2)

这种模式[^(start)(end)]并不代表您的想法,它并不意味着非{}}和[之间的字符,而非{ 它起作用的唯一原因是因为你有]start之间的数字,如果你添加一个像end这样的字母,它就不会工作。

使用此模式

s
带有START((?:(?!START|END).)*)END 选项的

Demo

gi

答案 1 :(得分:2)

(?<=start)(?:(?!start|end).)*(?=end)

如果您不想捕获startend以及其中的内容,也可以尝试此操作。请参阅演示,

http://regex101.com/r/yP3iB0/23