在我的.NET应用程序中,我需要解析文本,它可以具有内联条件,如下所示:
这是一些文字。 {{if:条件}} 以下是一些条件文字。 {{endif}} 以下是更多文字。
所以我写了以下正则表达式来找到这些条件:
\{\{if\:(?<condition>[^\}]+)\}\}(?<value>.+)\{\{endif\}\}
这对我来说很好,达到了我想要的效果,直到我不得不处理两个条件的输入:
{{if:条件}} 内容 {{endif}} 其他一些内容 {{if: condition2 }} content2 {{endif}}
在这种情况下,我的正则表达式从第一个条件的{{if}}开始,以第二个条件的{{endif}}结束,从而使我的applciation无法正常工作。
如何重写我的正则表达式以使其工作?或者我必须在没有正则表达式的情况下实现它?
编辑:我应该说条件中的内容也可以用双花括号来表示其他结构,所以它不是那么简单就是忽略那些!
注意:嵌套条件也存在潜在问题,但我认为我不必担心这些问题!
答案 0 :(得分:2)
您的问题是value
组的贪婪量词。使用此:
\{\{if\:(?<condition>[^\}]+)\}\}(?<value>.+?)\{\{endif\}\}