匹配正则表达式中的两个完整单词

时间:2013-04-25 13:36:37

标签: regex visual-studio-2010

我正在努力寻找使用正则表达式匹配两个连续整个单词的解决方案。我有一个文本框,用户可以在其中键入他们的搜索条件,并用引号括起来进行完全匹配。然后用RegEx表达式替换引号和空格(如果有的话)。这是一个例子:

用户输入:“Apple Orange”

转换为:

\bApple\W+(?:\w+\W+){1,6}?Orange\b

然后,我的RegEx匹配将基于此转换后的标准。说明来自www.regular-expressions.info/near.html

也许我会以完全错误的方式解决这个问题?我正在使用visual studio。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

如果您想在用户使用引号时进行完全匹配,那么您应该删除引号并进行直接字符串比较(相等,不包含)

<强>更新

根据以下评论,您只需使用单个词匹配即可:

单词:

\bApple\b

双字

\bApple Orange\b

这个想法是用户在搜索词中输入并且你完全匹配,所以你不会为术语本身进行模式匹配,只是它的边界(围绕它的\b )。没有理由触及搜索词本身(Apple和Orange之间的所有东西都是你想要做的),因为即使是两者之间的空间也是他们搜索的一部分...除非你想要做一点灵活...例如,如果用户输入"Apple[lots of space here]Orange"只计算一个空格,那么你可以做

\bApple\s+Orange\b

..但是你有点偏离整个“完全匹配”的主题......

旁注:您在评论中说过,对于“CrabApple OrangeCrush”,您不希望“Apple Orange”匹配。这就是您使用\b字边界的原因。但IMO如果是我,我会允许匹配。或者至少,提供某种选择以这种方式搜索它。