很简单的正则表达式不起作用

Tom*_*ana 6 .net c# regex string

我已经阅读过使用正则表达式(在.NET中)匹配字符串内的单词,我可以\b在正则表达式中使用单词boundary specifier().但是,这些调用都不会导致任何匹配

Regex.Match("INSERT INTO TEST(Col1,Col2) VALUES(@p1,@p2)", @"\b@p1\b");

Regex.Match("INSERT INTO TEST(Col1,Col2) VALUES(@p1,@p2)", @"\bINSERT\b");
Run Code Online (Sandbox Code Playgroud)

有什么我做错了吗?

编辑:第二个已经工作;)

Mar*_*ers 10

更新:正如另一个答案所指出的,@不是单词字符,因此@空间之间没有单词边界.作为一种解决方法,您可以改为使用负面的lookbehind:

@"(?<!\w)@p1\b"
Run Code Online (Sandbox Code Playgroud)

原始答案:您需要@在正则表达式前面:

@"\b@p1\b"
Run Code Online (Sandbox Code Playgroud)

如果没有这个,字符串"\ b"将被解释为退格(字符8),而不是正则表达式字边界.在MSDN上有关于@ -quoted字符串文字的更多信息.

不使用@ -quoted字符串文字的另一种方法是转义反斜杠:

"\\b@p1\\b"
Run Code Online (Sandbox Code Playgroud)