使用正则表达式搜索单词

Search a word using regular expression

本文关键字:单词 搜索 正则表达式      更新时间:2023-09-26

如何搜索完全匹配的单词,例如如何搜索单词"leak",但搜索结果不应包括"leaked"或"leaks"等单词。

感谢JavascriptMySQL的帮助。

基本上,您需要查找单词边界。因此,不要考虑寻找单词leak,而是寻找单词$leak#,其中$是每个单词开头的一个虚构字符,#是每个单词结尾的一个假想字符(不是标准约定,只是假设为本例)。这些单词是由分隔的,比如说空白。因此,leakedleaks就是$leaked#$leaks#。因此,唯一匹配的部分是$leak而不是$leak#

要在MySQL中执行此操作,条件为:

REGEXP '[[:<:]]leak[[:>:]]';

这里,[[:<:]]开始词-词边界[[:>:]]结束词-词边缘

对于JavaScript,查询将为:

/'bleak'b/

这里,序列'b表示单词边界(在javascript中,开始单词和结束单词边界之间没有区别)。它不仅适用于空格,甚至适用于标点符号,例如:

.leak
,leak
;leak

将匹配/'bleak'b/,但aleak将不匹配。(我不确定MySQL)

正则表达式将是

/'bleak'b/

在JavaScript 中的使用

var patt1=/'bleak'b/i;
patt1.test(your_string); // Returns true/false

对于MySQL(我不知道它支持正则表达式,谢谢Rohan Prabhu):

expr REGEXP [[:<:]]leak[[:>:]]

这将匹配不以leak*开头的单词

(?!leak'w*)'b'w+'b

粗体匹配:

  • 未泄漏泄漏泄漏
'bleak'b

我已经在以下输入上进行了测试:

  1. 泄漏或泄漏泄漏等
  2. 泄漏,你好
  3. find:泄漏你好
  4. 你好,世界!泄漏