我在使用C#代码时发现了这个正则表达式。有人可以向我解释一下:
@"(?s)\{\{\s*" + templateTitle + @"(.*?)}}\r?\n?"
我测试了它,它返回了像
这样的文本{{ templateTitleValue anything}}
我不明白的是两个'}}'没有被\}两个'}}'转义。什么是'(?s)'开头。
由于
答案 0 :(得分:6)
实际上,你也不需要逃避开口牙箍。从上下文中可以清楚地看出,它们不是量词(如X{1,3}
中的X
,XX
或XXX
。但是,无论如何都要逃避它们(并且也要逃避结束的那些)是好的做法,以防正则表达式变成某些可能有些含糊不清的东西。
(?s)
表示“允许点(.
)匹配所有字符,包括换行符”。这也称为Singleline
or DOTALL
option。