如何搜索完全匹配的单词,例如如何搜索单词“leak
”,但搜索结果不应包含“leaked
”或“leaks
”等字词
Javascript 和 MySQL 的帮助将不胜感激。
答案 0 :(得分:5)
基本上,您需要寻找单词边界。因此,不要考虑查找单词leak
,而是查找单词$leak#
,其中$
是一个虚构的字符,位于每个单词的开头{{1} }是每个单词末尾的虚构字符(不是标准惯例,只是假设它为此示例)。这些词是分隔的,现在让我们说空白。因此,#
和leaked
为leaks
和$leaked#
。因此,匹配的唯一部分是$leaks#
而不是$leak
。
要在 MySQL 中执行此操作,条件为:
$leak#
此处,REGEXP '[[:<:]]leak[[:>:]]';
是开始字词边界,[[:<:]]
是结束词字边界。
对于 JavaScript ,查询将为:
[[:>:]]
此处,序列/\bleak\b/
表示字边界(在javascript中,开始字和结束字边界之间没有区别)。它不仅适用于空格,甚至可用于标点字符,例如:
\b
将匹配.leak
,leak
;leak
,但/\bleak\b/
则不匹配。 (虽然我不确定MySQL)
答案 1 :(得分:1)
正则表达式将是
/\bleak\b/
JavaScript中的用法
var patt1=/\bleak\b/i;
patt1.test(your_string); // Returns true/false
对于MySQL(I didn't know it had support for regexes,感谢Rohan Prabhu):
expr REGEXP [[:<:]]leak[[:>:]]
答案 2 :(得分:0)
这将匹配不以泄漏*
开头的单词(?!leak\w*)\b\w+\b
以粗体显示匹配:
答案 3 :(得分:0)
\bleak\b
我在以下输入上测试了它: