2

私は基本的にこれを持っています:

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}"です。最初の の前に余分なスペースを入れると、正常に'$'機能します。

4

1 に答える 1

4

引数を交換しています。Regex.IsMatch署名は次のとおりです。

public static bool IsMatch(string input, string pattern)

編集:次のコードTrueは私のために2回印刷されます。

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

EDIT2:前の編集を削除しました。一致は私のために機能します。

于 2012-12-18T15:38:10.507 に答える