例如,我们有以下字符串:
Something
AnotherThing
Something AnotherThing
如果我使用RegexOptions.Singleline
模式Something.+?AnotherThing
,那么当我想仅匹配第一行和第二行时,我会得到两个匹配。我想使用像FirstLine#endofline##startofline#AnotherLine
这样的东西。所以我用:
var regex = new Regex(@"Something$^AnotherThing", RegexOptions.Multiline);
但它不起作用。我知道我可以使用Singleline的一些黑客来匹配前两行(而不是最后一行),但问题是:是否可以在没有单行说明符的情况下在精确的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,你需要考虑到它。