我注意到了以下几点: var b1 = Regex.IsMatch("Line1\nLine2", "Line1$", RegexOptions.Multiline); // true var b2 = Regex.IsMatch("Line1\r\nLine2", "Line1$", RegexOptions.Multiline); // false 我很困惑。 RegexOptions的文档说: 多线 :多线模式。 改变^和$的含义,使它们分别匹配任何行的开始和结束,而不仅仅是整个string的开始和结束。 由于C#和VB.NET主要用于Windows世界,所以我猜想.NET应用程序处理的大多数文件使用CRLF换行符( \r\n )而不是LF换行符( \n )。 尽pipe如此,.NET正则expression式parsing器似乎无法将CRLF 换行识别为行尾 。 我知道我可以解决这个问题,例如,通过匹配Line1\r?$ ,但它仍然令我感到奇怪。 这是真正的.NET正则expression式parsing器的预期行为还是我错过了一些隐藏的UseWindowsLinebreaks选项?