c# - 用于匹配短语中单个单词的正则表达式

标签 c# regex

我正在使用正则表达式执行站点搜索。 如果我搜索这个:“Villas at Millwood”(这是一个社区名称)并且相应的社区名称是“Villas at Millwood”,我会得到结果。

如果我搜索“Millwood villas”,则不会显示任何结果。

我的意思是,该短语被视为一个整体,并进行了匹配。有什么方法可以匹配输入的短语中出现的单个单词吗?这样“millwood Villas”仍然会带来这样的结果 “米尔伍德别墅”?

这是我必须匹配社区名称的内容:

Regex.IsMatch(MarketingCommunityName.Trim(), pattern, RegexOptions.IgnoreCase)

其中 pattern 是输入的搜索短语,MarketingCommunityName 是实际的社区名称。

提前致谢!

最佳答案

虽然我认为您应该在一个空格处拆分您的搜索模式,然后分别检查每个单词,但从您的搜索模式构造一个与顺序无关的正则表达式并不会太难:

var searchWords = searchString.Trim().Split(new Char[] {' '});

string pattern = @"^(?=.*" + String.Join(@")(?=.*", searchWords) + ")";

这构建了一个正则表达式,每个搜索词包含一个先行断言。每个先行断言都从字符串的开头开始,并查看搜索词是否出现在字符串内的任何位置。请注意,如果您的 searchString 包含正则表达式元字符,您可能会遇到问题,因此应该事先对这些元字符进行转义。

关于c# - 用于匹配短语中单个单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167416/

相关文章:

Python 和正则表达式

python - 在 python 中按字符串模式对项目进行分组

regex - 我究竟做错了什么 ? sed : -e expression #1, 字符 74:缺少命令

c# - x64 上是否没有适用于 PowerShell 的 TFS Snapin?

c# - 是否有从字符串转换为构造函数类型的 DI 框架?

带有特殊字符的 C# 字符串到 MySQL varchar 列

c# - 即时搜索asp.net

c# - Entity Framework 选择项目在有序列表中的位置

regex - 将多个正则表达式组合成一个/构建小正则表达式以匹配一组固定字符串

javascript - 单词边界与 Javascript 中的开头或结尾不匹配