有人可以向我解释这个正则表达式

时间:2013-10-15 18:34:42

标签: c# regex

我在使用C#代码时发现了这个正则表达式。有人可以向我解释一下:

@"(?s)\{\{\s*" + templateTitle + @"(.*?)}}\r?\n?"

我测试了它,它返回了像

这样的文本
{{   templateTitleValue     anything}}

我不明白的是两个'}}'没有被\}两个'}}'转义。什么是'(?s)'开头。

由于

1 个答案:

答案 0 :(得分:6)

实际上,你也不需要逃避开口牙箍。从上下文中可以清楚地看出,它们不是量词(如X{1,3}中的XXXXXX。但是,无论如何都要逃避它们(并且也要逃避结束的那些)是好的做法,以防正则表达式变成某些可能有些含糊不清的东西。

(?s)表示“允许点(.)匹配所有字符,包括换行符”。这也称为Singleline or DOTALL option