从mysql中的字符串中获取哈希标记

时间:2017-08-29 06:45:27

标签: mysql regex hash user-defined-functions

友 我想从字段中获取主题标签。

select PREG_RLIKE("/[[:<:]]abcd[[:>:]]/","okok got it #abcd"); 
//output 1

BUT

select PREG_RLIKE("/[[:<:]]#abcd[[:>:]]/","okok got it #abcd"); 
//output 0

没有理解#没有考虑的原因 请帮忙

1 个答案:

答案 0 :(得分:1)

模式匹配:

  • [[:<:]] - 领先的单词边界
  • #abcd - 文字字符串
  • [[:>:]] - 一个尾随字边界。

由于前导词边界是非单词和单词char(或字符串的开头和单词char)之间的位置,因此您不能期望它在空格(非单词)之间匹配char)和哈希符号(#)。

由于您使用的是基于PCRE的UDF function,因此请使用lookarounds:

select PREG_RLIKE("/(?<!\\w)#abcd(?!\\w)/","okok got it #abcd"); 

如果搜索字词前面带有单词char,则(?<!\w)负面后瞻操作就像一个前导字边界失败,如果搜索字符后面跟着一个字符(?!\w)否定前瞻字符串就会失败字char。

请参阅regex demo

相关问题