正则表达式匹配除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”代替。)