5

这是我的正则表达式:Regex r = new Regex("start(.*?)end", RegexOptions.Multiline);

这意味着我想得到 和 之间的"start"东西"end"。但问题是 start 和 end 之间是一个新行,或者\n正则表达式不返回任何内容。

那么如何让正则表达式找到\n呢?

4

3 回答 3

6

Multiline选项的名称具有误导性,正确的选项之一也是如此 - Singleline

Regex r = new Regex("start(.*?)end", RegexOptions.Singleline);

来自 MSDN,RegexOptions 枚举

Singleline - 指定单行模式。更改点 (.) 的含义,使其匹配每个字符(而不是除 \n 之外的每个字符)。

于 2012-05-20T20:50:03.830 回答
2

包括 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 。

于 2012-05-20T20:49:56.120 回答
1

使用Singleline而不是Multiline

Regex r = new Regex("start(.*?)end", RegexOptions.Singleline);

顺便说一句,RegexBuddy是您无价的朋友(不,我与作者没有任何联系,除了是一个快乐的用户)。

于 2012-05-20T20:52:25.607 回答