需要有关正则表达式的帮助

时间:2011-05-09 10:23:32

标签: .net regex

在我的.NET应用程序中,我需要解析文本,它可以具有内联条件,如下所示:

  

这是一些文字。 {{if:条件}} 以下是一些条件文字。 {{endif}} 以下是更多文字。

所以我写了以下正则表达式来找到这些条件:

\{\{if\:(?<condition>[^\}]+)\}\}(?<value>.+)\{\{endif\}\}

这对我来说很好,达到了我想要的效果,直到我不得不处理两个条件的输入:

  

{{if:条件}} 内容 {{endif}} 其他一些内容 {{if: condition2 }} content2 {{endif}}

在这种情况下,我的正则表达式从第一个条件的{{if}}开始,以第二个条件的{{endif}}结束,从而使我的applciation无法正常工作。

如何重写我的正则表达式以使其工作?或者我必须在没有正则表达式的情况下实现它?

编辑:我应该说条件中的内容也可以用双花括号来表示其他结构,所以它不是那么简单就是忽略那些!

注意:嵌套条件也存在潜在问题,但我认为我不必担心这些问题!

1 个答案:

答案 0 :(得分:2)

您的问题是value组的贪婪量词。使用此:

\{\{if\:(?<condition>[^\}]+)\}\}(?<value>.+?)\{\{endif\}\}