我有一串代码,如:
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; ,它跳过匹配。
如何优化代码以使用分号准确工作?
答案 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);
}