【发布时间】:2011-05-10 21:48:24
【问题描述】:
如何匹配给定文本的每一行的正则表达式模式?
我正在尝试^(.+)$,但它包含 crlf...
【问题讨论】:
如何匹配给定文本的每一行的正则表达式模式?
我正在尝试^(.+)$,但它包含 crlf...
【问题讨论】:
多行模式。改变的意思 ^ 和 $ 所以它们在开头匹配 和结束,分别,任何行, 而不仅仅是开始和结束 整个字符串。
例子:
var lineMatches = Regex.Matches("Multi\r\nlines", "^(.+)$", RegexOptions.Multiline);
【讨论】:
我不确定您所说的“匹配给定文本的每一行”是什么意思,但您可以使用字符类来排除 CR 和 LF 字符:
[^\r\n]+
【讨论】:
您问题的措辞似乎有点不清楚,但听起来您想要RegexOptions.Multiline(在System.Text.RegularExpressions 命名空间中)。这是您必须在 RegEx 对象上设置的选项。这应该使^ 和$ 匹配行 的开头和结尾,而不是整个字符串。
例如:
Regex re = new Regex("^(.+)$", RegexOptions.Compiled | RegexOptions.Multiline);
【讨论】:
你试过了吗:
^(.+)\r?\n$
这样,匹配组包含除 CRLF 之外的所有内容,并要求存在新行(Unix 默认),但接受前面的回车(Windows 默认)。
【讨论】:
我假设您使用的是多行选项?在这种情况下,您需要明确地将换行符与“\n”匹配。 (酌情替换为“\r\n”。)
【讨论】: