我无法弄清楚这一点或找到已经回答的问题。我有一个以逗号分隔格式的关键字列表。我想在字符串中搜索逗号列表中任何单词的匹配项。有人可以帮忙吗?示例代码:
string searchString = "http://www.website.com/test/?q=cats and dogs";
string keywords = "cats, dogs, whales, fish";
bool match = Regex.IsMatch(searchString , "xxxx"); // Need the regex string here
Console.WriteLine(match)
输出:真(因为猫和狗都在引用字符串中找到
我似乎无法弄清楚这一点。请帮忙。
答案 0 :(得分:1)
我不在我的电脑上,所以这不是袖手旁观,请记住我在关于规范化和处理CSV数据的风险的评论中的免责声明,但是......
var parts= keywords.Split(',').Select(x=>Regex.Escape(x.Trim()));
var pattern= "(" +string.Join("|" , parts) + ")";
var regex=new Regex(pattern);
bool match=regex.IsMatch(searchString);
你可能需要通过放置@" \ W"来强化(避免错误匹配)。在这样的模式字符串的开头和结尾......
var pattern= @"\W(" +string.Join("|" , parts) + @")\W";
为了迎合字符串开头和结尾的匹配,让它成为..
var pattern= @"(^|\W)(" +string.Join("|" , parts) + @")(\W|$)";
或者,感谢Johnbot:
var pattern= @"\b(" +string.Join("|" , parts) + @")\b";