例如,我们有以下字符串:
Something AnotherThing Something AnotherThing
如果我使用RegexOptions.Singleline
pattern,Something.+?AnotherThing
那么当我只想匹配第一行和第二行时会得到两个匹配项。我想使用类似的东西FirstLine#endofline##startofline#AnotherLine
。所以我用:
var regex = new Regex(@"Something$^AnotherThing", RegexOptions.Multiline);
但这不起作用。我知道我可以对Singleline使用某些技巧来匹配前两行(而不是最后一行),但问题是:甚至可以在没有Singleline说明符的情况下仅在具有多行选项的情况下在精确的2行中匹配精确的两个文本?以及为什么它会像这样。
怎么样:
Something\r?\nAnotherThing
\r?
如果字符串不是来自Windows。
该选项Something$^AnotherThing
不起作用的原因RegexOptions.Multiline
是因为^
和在换行符处$
匹配,而不是在换行符本身,所以下面的方法可以工作:
new Regex(@"Something$\r?\n^AnotherThing", RegexOptions.Multiline);