[英]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.