友 我想从字段中获取主题标签。
select PREG_RLIKE("/[[:<:]]abcd[[:>:]]/","okok got it #abcd");
//output 1
BUT
select PREG_RLIKE("/[[:<:]]#abcd[[:>:]]/","okok got it #abcd");
//output 0
没有理解#
没有考虑的原因
请帮忙
答案 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。