我正在努力寻找使用正则表达式匹配两个连续整个单词的解决方案。我有一个文本框,用户可以在其中键入他们的搜索条件,并用引号括起来进行完全匹配。然后用RegEx表达式替换引号和空格(如果有的话)。这是一个例子:
用户输入:“Apple Orange”
转换为:
\bApple\W+(?:\w+\W+){1,6}?Orange\b
然后,我的RegEx匹配将基于此转换后的标准。说明来自www.regular-expressions.info/near.html
也许我会以完全错误的方式解决这个问题?我正在使用visual studio。任何帮助表示赞赏。
答案 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如果是我,我会允许匹配。或者至少,提供某种选择以这种方式搜索它。