从 mysql 中的字符串中获取散列标签

To fetch hash tags from a string in mysql

朋友们, 我想从一个字段中获取主题标签。

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

但是

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

不明白为什么 # 不考虑 请帮助

模式匹配:

  • [[:<:]] - 前导词边界
  • #abcd - 文字字符串
  • [[:>:]] - 尾随单词边界。

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

由于您使用的是基于 UDF function 的 PCRE,请使用环视:

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

(?<!\w) 如果搜索词前面有一个单词 char,(?<!\w) 负向后视就像前导词边界一样无法匹配,如果后面是搜索词,(?!\w) 负向后视会导致匹配失败用一个词 char.

参见regex demo