需要 c# 正则表达式来匹配逗号列表中的任何单词与另一个字符串中的任何单词

Need c# regex to match any word in comma list with any word within another string

我无法解决这个问题或找不到已回答的问题。我有一个逗号分隔格式的关键字列表。我想搜索一个字符串以匹配逗号列表中的任何单词。有人可以帮忙吗?示例代码:

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)

输出:真(因为猫和狗都在引用字符串中找到

我好像想不通。请帮忙。

我不在我的电脑前,所以这是即兴的,请记住我在评论中关于规范化和处理 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";