这是我的正则表达式:Regex r = new Regex("start(.*?)end", RegexOptions.Multiline);
这意味着我想要获取在"start"
和"end"
之间的内容。但问题是,在start和end之间有一个换行符或\n
,而正则表达式没有返回任何内容。
那么如何让正则表达式找到\n
呢?
Multiline
选项的名称具有误导性,正确选项Singleline
也是如此:
Regex r = new Regex("start(.*?)end", RegexOptions.Singleline);
来自MSDN,RegexOptions枚举:
Singleline - 指定单行模式。更改句点(.)的含义,使其匹配每个字符(而不是除\n以外的每个字符)。
包括RegexOptions.SingleLine,这意味着 .
匹配所有内容,包括 \n
Regex r = new Regex("start(.*?)end", RegexOptions.Multiline | RegexOptions.SingleLine);
更多细节请参见http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx。
使用Singleline而不是Multiline:
Regex r = new Regex("start(.*?)end", RegexOptions.Singleline);
顺便说一下,RegexBuddy 是你无价的好朋友(不,我与作者没有任何联系,只是一个快乐的用户)。