正则表达式匹配除crlf之外的全行文本

正则表达式模式如何匹配给定文本的每一行?

我正在尝试^(.+)$但它包括crlf …

我不确定“匹配给定文本的每一行”是什么意思,但你可以使用一个字符类来排除CR和LF字符:

 [^\r\n]+ 

只需使用RegexOptions.Multiline 。

多线模式。 更改^和$的含义,使它们分别在任何行的开头和结尾匹配,而不仅仅是整个字符串的开头和结尾。

例:

 var lineMatches = Regex.Matches("Multi\r\nlines", "^(.+)$", RegexOptions.Multiline); 

你的问题的措辞似乎有点不清楚,但听起来你想要RegexOptions.Multiline (在System.Text.RegularExpressions命名空间中)。 这是您必须在RegEx对象上设置的选项。 这应该使^$匹配一行的开头和结尾而不是整个字符串。

例如:

 Regex re = new Regex("^(.+)$", RegexOptions.Compiled | RegexOptions.Multiline); 

你有没有尝试过:

 ^(.+)\r?\n$ 

这样匹配组包括除CRLF之外的所有内容,并且要求存在新行(Unix默认值),但接受前面的回车符(Windows默认值)。

我假设您正在使用Multiline选项? 在这种情况下,您需要明确地将换行符与“\ n”匹配。 (视情况用“\ r \ n”代替。)