HIVE中如何从字符串提取完整的话题标签?
正则提取Note字段标签的问题与解决方案
场景说明
假设存在名为note的字段,示例值如下:
- 'xyz #abc-xyz-dfg. #abd'
- '#123%36&89'
- '## avc #1 "Changed xyz #2 from "string"\n - stop #3 #'
当前使用代码
REGEXP_EXTRACT( regexp_replace( upper(note),'.?(\#\w+)' ' $1' ), '.(\#\w+)', 0 )
现有代码存在的问题
- 提取
#abc-xyz时仅得到#abc,无法获取完整标签; - 提取
#abc-xyz. #abcd时仅得到#abcd,遗漏前一个标签; #1、#2这类纯数字标签被跳过,返回null;#123%36&89仅提取出#123,无法获取包含特殊字符的完整标签。
最终解决方案代码
REGEXP_EXTRACT( regexp_replace( upper(note), '.*?(#[\w?\d?\\`\\~!@#$%\\^&*-_+{}\\[\\]\\|//?;:\\"]+)', ' $1' ), '.*(#[\w?\d?\\`\\~!@#$%\\^&*-_+{}\\[\\]\\|//?;:\\"]+)', 0 )
内容的提问来源于stack exchange,提问作者Ashima Sood
相关产品推荐
相关产品推荐

