我在工作 C# 代码中发现了这个正则表达式。有人可以向我解释一下吗:
@"(?s)\{\{\s*" + templateTitle + @"(.*?)}}\r?\n?"
我对其进行了测试,它返回的文本如下
{{ templateTitleValue anything}}
我不明白的是两个'}}'没有像两个'}}'一样被\转义。什么是开头的“(?s)”。
谢谢
实际上,您也不需要转义左大括号。从上下文中可以清楚地看出它们不是量词(如X{1,3}
匹配X
,XX
或XXX
)。但无论如何最好避开它们(也避开关闭的),以防正则表达式变为可能存在歧义的东西。
(?s)
表示“允许点 ( .
) 匹配所有字符,包括换行符”。这也称为Singleline
orDOTALL
选项。