C#Regex使用newLine在两个字符串之间查找字符串

时间:2012-05-20 20:47:46

标签: c# .net regex string

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

这意味着我希望获得"start""end"之间的内容。但问题是,开始和结束之间是一个新行或\n,正则表达式不会返回任何内容。

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

3 个答案:

答案 0 :(得分:5)

Multiline选项的名称具有误导性,正如其中一个选项 - Singleline

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

来自MSDN,RegexOptions Enumeration

  

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

答案 1 :(得分: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

答案 2 :(得分:1)

使用单行代替多行

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

BTW,RegexBuddy是您宝贵的朋友(不,我与作者没有任何联系,除非是一个快乐的用户)。