0

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

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

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

4 回答 4

4

你需要逃跑\b

使用\\来逃避它或只使用@逐字。

if (Regex.IsMatch("t1", @"\bt1\b"))
{
    return;  //This works as expected
}

这是演示

于 2013-10-14T10:14:32.853 回答
1

您的正则表达式正在工作。您只需要将每个"\"符号替换为"\\"或在正则表达式模式之前添加@以告诉编译器您的字符串是文字(@"your regex")。

于 2013-10-14T10:18:04.450 回答
1

您可以在此处测试 .Net 正则表达式:

http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

它为您提供了在程序中使用的字符串文字。

于 2013-10-14T10:19:16.763 回答
1

问题是您忘记在“\bt1\b”前面添加@符号,或者您也可以在代码中使用“\\bt1\\b”。
所以你的代码应该是

Regex.IsMatch("t1", @"\bt1\b");

或者

Regex.IsMatch("t1", "\\bt1\\b");

转义序列放错了位置。

于 2013-10-14T10:20:04.903 回答