我基本上有这个:
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}"。如果我在第一个之前放一个额外的空间'$',它就可以正常工作。
您正在交换论点。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:删除了以前的编辑,比赛对我有用。