Regex.IsMatch澄清

时间:2013-10-14 10:11:10

标签: c# regex

我试图在一个字符串中匹配整个单词。当我想将匹配仅限于整个单词时,我遇到了一个问题。当我试图调查时,我发现我的理解存在更大的问题。

以下程序找不到匹配项,我期待它:

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
        }
    }
}

有谁可以指出我做错了什么?

4 个答案:

答案 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");

逃生序列错位。