Regex 在正则表达式中匹配两个整词

Regex 在正则表达式中匹配两个整词,regex,visual-studio-2010,Regex,Visual Studio 2010,我正在努力找到一个解决方案,用正则表达式匹配两个连续的整词。我有一个文本框,用户可以在其中键入他们的搜索条件,并附上精确匹配的报价。引号和空格(如果有)随后被正则表达式替换。以下是一个例子: 用户输入:苹果橙 转换为: \bApple\W+(?:\w+\W+){1,6}?Orange\b 然后,我的正则表达式匹配将基于此转换标准。说明来自www.regular-expressions.info/near.html 也许我完全走错了方向?我正在使用VisualStudio。非常感谢您的帮助。如果

我正在努力找到一个解决方案,用正则表达式匹配两个连续的整词。我有一个文本框,用户可以在其中键入他们的搜索条件,并附上精确匹配的报价。引号和空格(如果有)随后被正则表达式替换。以下是一个例子:

用户输入:苹果橙

转换为:

\bApple\W+(?:\w+\W+){1,6}?Orange\b
然后,我的正则表达式匹配将基于此转换标准。说明来自www.regular-expressions.info/near.html


也许我完全走错了方向?我正在使用VisualStudio。非常感谢您的帮助。

如果您想在用户使用引号时获得精确的匹配,那么您应该删除引号并进行直接字符串比较,而不是包含

更新:

根据下面的评论,您只需执行与单个单词匹配相同的操作:

单字:

\b示例\b

双字

\b苹果橙\b

这样做的目的是,用户输入搜索词,您就可以精确地匹配该词,这样您就不会对该词本身进行模式匹配,而只需对其周围的\b边界进行匹配。没有理由去触碰搜索词本身——苹果和橙色之间的所有东西,因为即使是两者之间的空间也是他们搜索的一部分……除非你想让它变得更灵活。例如,如果用户进入苹果[这里有很多空间]橙色,将其作为一个单独的空间计算,那你就可以做了

\b示例\s+橙色\b

…但是你有点偏离了比赛的主题


旁注:您在评论中说,对于海棠橙,您不希望苹果橙与之匹配。这就是为什么要使用\b单词边界。但在我看来,如果是我,我会允许这种情况发生。或者至少,提供某种选择,以这种方式搜索它

你用什么语言?你可以在C中使用类似于或的东西,而不是正则表达式。我使用正则表达式是因为它能够匹配整个单词,我不确定String.Contains或String.IndexOf是否可以实现这一点?你可以通过在开头和结尾添加空格来搜索整个单词,虽然在你的情况下,如果我理解正确的话,更多的是搜索一个短语。添加额外的空格,简单方便的解决方案,这一点很好!你能给我一个简单的例子,使用相等,而不是包含吗?这取决于你使用的语言,但通常是一个双等号==如a==b{//a等于b}也取决于你搜索的对象。这是一个数据库查询吗?然后通常它只是一个等号,就像在表中的select列中一样,其中column='search term'将是一个完全匹配的查找这是我的一个疏忽:输入的搜索条件将与文本体进行比较;因此,在完全相等的基础上将搜索条件与搜索主体进行比较不会返回匹配。在正则表达式中,我可以通过说\bApple\b进行搜索,如果它找到整个单词Apple,则只会返回匹配项。然而,我不知道正确的语法或其他解决方案来寻找整组单词,例如苹果橙。使用大多数字符串比较,如果存在CrabApple OrangeCrush,将返回一个匹配项,这不是我所希望的。好的,那么它仍然是一样的…只是\bApple Orange\b