下面是一个简单的代码片段,演示了.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);
答案 0 :(得分:6)
$
不使用换行符。 @"^Hello$\s+^World$"
应匹配。
答案 1 :(得分:1)
$
与换行符不匹配。它匹配应用模式的字符串的末尾(除非启用了多行模式)。将两端放在一个字符串中没有多大意义。