使用正则表达式搜索单词

时间:2012-02-20 08:47:54

标签: javascript mysql regex search

如何搜索完全匹配的单词,例如如何搜索单词“leak”,但搜索结果不应包含“leaked”或“leaks”等字词

Javascript MySQL 的帮助将不胜感激。

4 个答案:

答案 0 :(得分:5)

基本上,您需要寻找单词边界。因此,不要考虑查找单词leak,而是查找单词$leak#,其中$是一个虚构的字符,位于每个单词的开头{{1} }是每个单词末尾的虚构字符(不是标准惯例,只是假设它为此示例)。这些词是分隔的,现在让我们说空白。因此,#leakedleaks$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

以粗体显示匹配:

  • notleaked 泄漏漏泄

答案 3 :(得分:0)

\bleak\b

我在以下输入上测试了它:

  1. 泄漏或泄漏。 '泄漏'等。
  2. 泄漏,你好
  3. find:leak-hello
  4. 你好世界!泄漏