正则表达式通过多行匹配

时间:2016-01-10 05:07:08

标签: c# .net regex

例如,我们有以下字符串:

Something
AnotherThing
Something AnotherThing

如果我使用RegexOptions.Singleline模式Something.+?AnotherThing,那么当我想仅匹配第一行和第二行时,我会得到两个匹配。我想使用像FirstLine#endofline##startofline#AnotherLine这样的东西。所以我用:

var regex = new Regex(@"Something$^AnotherThing", RegexOptions.Multiline);

但它不起作用。我知道我可以使用Singleline的一些黑客来匹配前两行(而不是最后一行),但问题是:是否可以在没有单行说明符的情况下在精确的2行中匹配精确的两个文本,仅使用多行选项?为什么它会像这样。

2 个答案:

答案 0 :(得分:4)

怎么样:

Something\r?\nAnotherThing

\r?以防该字符串不是来自Windows。

Something$^AnotherThing无法使用RegexOptions.Multiline选项的原因是因为^$匹配 换行符,不是这条线会破坏自己,所以以下方法会起作用:

new Regex(@"Something$\r?\n^AnotherThing", RegexOptions.Multiline);

答案 1 :(得分:0)

尝试使用回车符和换行符匹配,例如

Something\r?\nAnotherThing

基本上,回车会给你带来麻烦(你并不孤单)。你知道你的文本来自哪个操作系统吗?如果它来自Windows,那么在\ n之前会有一个\ r,你需要考虑到它。