总而言之,我有一系列string
由“GO”分隔的 SQL 语句(不区分大小写,因此“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";
我想避免在“Legolas”中的“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# 应用程序中。
为什么会出现差异,我做错了什么?
谢谢你的时间。