为什么这个正则表达式不匹配?

时间:2012-12-18 15:32:25

标签: c# .net regex

我基本上有这个:

Regex rx = new Regex(@"\$(?:(\$)|(\{(?<ex>.*?)\}))");
string s = "${P#(n*8+1)!=0$$P}${P#(n*8+1)!=0$N/A$[n*8+1]}";

Match m = rx.Match(s, 0);

第一场比赛是"${P#(n*8+1)!=0$N/A$[n*8+1]}",应该是"${P#(n*8+1)!=0$$P}"。如果我在第一个'$'之前放了一个额外的空格,它就可以了。

1 个答案:

答案 0 :(得分:4)

你正在交换论点。 Regex.IsMatch签名是:

public static bool IsMatch(string input, string pattern)

编辑:以下代码为我打印True两次。

var p = @"\$(?:(\$)|(\{(?<ex>.*?)\}))";
var regex = new Regex(p);
Console.WriteLine(regex.IsMatch(" ${foo}"));
Console.WriteLine(regex.IsMatch("${foo}"));

EDIT2:删除了之前的编辑,该匹配适用于我。