我试图在一个字符串中匹配整个单词。当我想将匹配仅限于整个单词时,我遇到了一个问题。当我试图调查时,我发现我的理解存在更大的问题。
以下程序找不到匹配项,我期待它:
class Program
{
static void Main(string[] args)
{
if (Regex.IsMatch("t1", "\bt1\b"))
{
return; // I was expecting this to be hit but it is not
}
}
}
有谁可以指出我做错了什么?
答案 0 :(得分:4)
您需要转义\b
使用\\
来逃避它,或者只使用@
逐字。
if (Regex.IsMatch("t1", @"\bt1\b"))
{
return; //This works as expected
}
这里是Demo
答案 1 :(得分:1)
你的正则表达式正在运行。您只需要将每个“\”符号替换为“\\”,或者在正则表达式模式之前添加 @ ,告诉编译器您的字符串是字面值( @“你的正则表达式”)。
答案 2 :(得分:1)
您可以在此处测试.Net正则表达式:
http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
它为您提供了在程序中使用的字符串文字。
答案 3 :(得分:1)
问题是您忘记在“\ bt1 \ b”前添加@符号,或者您也可以在代码中使用“\\ bt1 \\ b”。
所以你的代码应该是
Regex.IsMatch("t1", @"\bt1\b");
或
Regex.IsMatch("t1", "\\bt1\\b");
逃生序列错位。