C# 正则表达式与分号匹配不准确

C# 正则表达式与分号匹配不准确,c#,c#-4.0,.net-4.0,C#,C# 4.0,.net 4.0,我有一系列代码,如: 0926;0941;0917;0930;094D; 我想搜索:0930;094D在上面的字符串中。我使用以下代码查找字符串片段: static bool ExactMatch(string input, string match) { return Regex.IsMatch(input, string.Format(@"\b{0}\b", Regex.Escape(match))); } 问题是代码有时有效,有时无效。如果我匹

我有一系列代码,如:

0926;0941;0917;0930;094D;
我想搜索:
0930;094D在上面的字符串中。我使用以下代码查找字符串片段:

   static bool ExactMatch(string input, string match)
    {

        return Regex.IsMatch(input, string.Format(@"\b{0}\b", Regex.Escape(match)));

    }
问题是代码有时有效,有时无效。如果我匹配单个代码,例如:0930,它可以工作,但当我添加094D,它跳过了比赛


如何优化代码以准确使用分号?

试试这个,我已经测试过了

string val = "0926;0941;0917;0930;094D;";
string match = "0930;094D;"; // or match = "0930;" both found

if (Regex.IsMatch(val,match))
     Console.Write("Found");
else Console.Write("Not Found");

也许我没有正确理解你的处境;但是,如果要在字符串中查找精确匹配项,是否可以简单地避免使用正则表达式并使用字符串。包含:

static bool ExactMatch(string input, string match)
{
    return input.Contains(match);
}
“\b”表示介于单词和非单词字符之间的单词边界。不幸的是,分号不是单词字符。在“0926;0941;0917;0930;094D;”的末尾没有“\b”,因此正则表达式不显示匹配项


为什么不删除正则表达式中的最后一个“\b”?

“Contains”没有执行精确匹配。我试过了,但即使一个代码在开头,另一个在结尾,它也能工作。它能工作,但让我看看它是否能对各种字符串执行。以前它有时也能工作,但在某些情况下失败。