正则表达式与分号不匹配

时间:2012-02-01 06:10:55

标签: 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)));

    }

问题在于有时代码有效,有时则无效。如果我匹配单个代码,例如:0930; ,它工作,但当我添加094D; ,它跳过匹配。

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

3 个答案:

答案 0 :(得分:1)

试试这个,我测试了..

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

答案 1 :(得分:1)

“\ b”表示单词边界,它位于单词和非单词字符之间。不幸的是,分号不是一个单词字符。 “0926; 0941; 0917; 0930; 094D”结尾没有“\ b”;因此正则表达式不显示匹配。

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

答案 2 :(得分:0)

也许我不能正确理解你的情况;但如果你在字符串中寻找完全匹配,你不能简单地避免正则表达式并使用string.Contains:

static bool ExactMatch(string input, string match)
{
    return input.Contains(match);
}
相关问题