Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要c#regex将逗号列表中的任何单词与另一个字符串中的任何单词进行匹配_C#_Regex_List_Comma - Fatal编程技术网

需要c#regex将逗号列表中的任何单词与另一个字符串中的任何单词进行匹配

需要c#regex将逗号列表中的任何单词与另一个字符串中的任何单词进行匹配,c#,regex,list,comma,C#,Regex,List,Comma,我想不出这个问题,也找不到已经回答过的问题。我有一个逗号分隔格式的关键字列表。我想在字符串中搜索逗号列表中任何单词的匹配项。有人能帮忙吗?示例代码: string searchString = "http://www.website.com/test/?q=cats and dogs"; string keywords = "cats, dogs, whales, fish"; bool match = Regex.IsMatch(searchString , "xxxx"); // Nee

我想不出这个问题,也找不到已经回答过的问题。我有一个逗号分隔格式的关键字列表。我想在字符串中搜索逗号列表中任何单词的匹配项。有人能帮忙吗?示例代码:

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)
输出:True(因为猫和狗都在referer字符串中


我似乎无法理解这一点。请帮助。

我不在电脑旁,所以这是即兴的,请记住我在评论中关于标准化和处理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|$)";
或者,感谢约翰伯特:

var pattern= @"\b(" +string.Join("|" , parts) + @")\b";

关键字字符串是否在您的控制下?如果是,为什么不提供一个合适的正则表达式而不是逗号分隔的列表?如果您需要,我可以发布一个特定的答案…关键字将来自数据库表字段。该字段有一个逗号列表。我想看看是否有任何关键字与搜索字符串中的任何单词匹配。谢谢“ReaReSimsio”字段有逗号列表。“那么你还有其他问题,因为如果一个值包含逗号,它就需要被转义。请考虑你的数据以避免这个问题。我有一定的局限性,不能正常化。难道我找不到一个匹配=真的正则表达式吗?请?”你问的是“XY”。问题。也就是说,你对如何解决这个问题有一些想法——正则表达式——并且只关注于这个解决方案。它可能不是正确的解决方案!有很多可能比正则表达式更好的解决方案。这很接近。谢谢!有没有办法只匹配整个单词?例如,如果我的关键字是文本“og,rat”,它返回true,但我只希望它在整个单词“dog”时返回true"从我的关键字列表中找到了匹配项。换句话说,我只希望在搜索字符串中找到逗号之间的整个短语。再次感谢Richardissimo!@HarrisStephanie spooky,我正为此编辑它。我必须删除字符串末尾的\W以获得首选输出。这是一个很大的帮助!再次感谢Richardissimo。@HarrisStephanie刚刚再次编辑,因为我猜如果单词位于字符串的末尾,则不匹配。请使用单词边界,
\b
,而不是单词,
\W
。它处理字符串的开始/结束以及许多其他情况。