为什么$ $总是不匹配到行尾

时间:2011-03-21 19:40:30

标签: c# .net regex

下面是一个简单的代码片段,演示了.Net正则表达式中行尾匹配(“$”)的看似错误的行为。我错过了一些明显的东西吗?

        string input = "Hello\nWorld\n";
        string regex = @"^Hello\n^World\n";  //Match
        //regex = @"^Hello\nWorld\n";  //Match
        //regex = @"^Hello$";  //Match
        //regex = @"^Hello$World$";  //No match!!!
        //regex = @"^Hello$^World$";  //No match!!!

        Match m = Regex.Match(input, regex, RegexOptions.Multiline | RegexOptions.CultureInvariant);
        Console.WriteLine(m.Success);

2 个答案:

答案 0 :(得分:6)

$不使用换行符。 @"^Hello$\s+^World$"应匹配。

答案 1 :(得分:1)

$与换行符不匹配。它匹配应用模式的字符串的末尾(除非启用了多行模式)。将两端放在一个字符串中没有多大意义。