すべて、「GO」で区切られた一連のSQLステートメントがありますstring
(大文字と小文字は区別されないため、「Go」、「go」なども有効です)。私が次のようなステートメントを持っている場合
string str = "INSERT INTO People \r\n" +
"VALUES (3, 'Gandalf', 'The Gray'); \r\nGO\r\n" +
"INSERT INTO People \r\n" +
"VALUES (4, 'Legolas', 'Camus'); \r\nGO";
「レゴラス」の「go」での一致を避けたい。これを行うために、私はLINQPadで、負の先読みと正の後読みの両方を持つ 正規表現を考案しました。
string str = "INSERT INTO People \r\n" +
"VALUES (3, 'Gandalf', 'The Gray'); \r\nGO\r\n" +
"INSERT INTO People \r\n" +
"VALUES (4, 'Legolas', 'Camus'); \r\nGO";
Regex regGo = new Regex(@"(?<=\b)(?i)GO(?!\w+)");
MatchCollection matches = regGo.Matches(str);
foreach (Match m in matches)
{
m.Dump();
}
これは私が望むことを実行します。つまり、新しい「GO」であり、その後に何も続かない場合にのみ、「GO」に一致します。これはLINQPadで機能します。つまり、必要な結果を返します。しかし、私のC#アプリにはありません。
なぜ不明瞭なのか、そして私は何を間違っているのですか?
御時間ありがとうございます。