簡體   English   中英

正則表達式IsMatch澄清

[英]Regex.IsMatch clarification

我正在嘗試將整個單詞再匹配一個字符串。 當我只想限制整個單詞的匹配時,我遇到了一個問題。 當我嘗試研究它時,我發現我的理解存在更大的問題。

以下程序找不到匹配項,我期望它能夠:

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

誰能指出我做錯了什么?

您需要轉義\\b

使用\\\\進行轉義,或僅使用@逐字顯示。

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

這是演示

您的正則表達式正在運行。 您只需要將每個“ \\”符號替換為“ \\\\”,或在正則表達式模式之前添加@即可告訴編譯器您的字符串是文字字符串( @“您的正則表達式” )。

您可以在此處測試.Net正則表達式:

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

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

問題是您忘記在“ \\ bt1 \\ b”前面添加@符號,或者您也可以在代碼中使用“ \\\\ bt1 \\\\ b”。
所以你的代碼應該是

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

要么

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

轉義序列放錯了位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM