-2

我在工作 C# 代码中发现了这个正则表达式。有人可以向我解释一下吗:

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

我对其进行了测试,它返回的文本如下

{{   templateTitleValue     anything}}

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

谢谢

4

1 回答 1

6

实际上,您也不需要转义左大括号。从上下文中可以清楚地看出它们不是量词(如X{1,3}匹配X,XXXXX)。但无论如何最好避开它们(也避开关闭的),以防正则表达式变为可能存在歧义的东西。

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

于 2013-10-15T18:39:37.377 回答