【问题标题】:To fetch hash tags from a string in mysql从 mysql 中的字符串中获取哈希标签
【发布时间】:2017-08-29 06:45:26
【问题描述】:

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

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

但是

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

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

【问题讨论】:

  • 因为字边界。它将在"okok got it#abcd" 中找到匹配项。另外,如果您使用 PCRE,为什么要使用 MySQL 之类的词边界?使用\b。或者,在这种情况下,使用(?&lt;!\w)#abcd(?!\w)

标签: mysql regex hash user-defined-functions


【解决方案1】:

模式匹配:

  • [[:&lt;:]] - 前导词边界
  • #abcd - 文字字符串
  • [[:&gt;:]] - 词尾边界。

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

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

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

(?&lt;!\w) 否定前瞻就像一个引导词边界,如果搜索词前面有一个单词 char,则匹配失败;如果搜索词后面有一个单词 char,(?!\w) 否定前瞻则失败匹配。

请参阅regex demo

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 2018-09-01
    • 2017-05-28
    • 2015-12-20
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    相关资源
    最近更新 更多