regexp_extract

语法: regexp_extract(string subject, string pattern, int index)

返回值: string

说明: 将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。

  • 第一参数string subject: 要处理的字段
  • 第二参数string pattern: 需要匹配的正则表达式
  • 第三个参数int index:
    0是显示与之匹配的整个字符串
    1 是显示第一个括号里面的
    2 是显示第二个括号里面的字段…

使用示例
select

regexp_extract(‘x=a3&x=18abc&x=2&y=3&x=4’,‘x=([0-9]+)([a-z]+)’,0), – x=18abc

regexp_extract(‘x=a3&x=18abc&x=2&y=3&x=4’,‘^x=([a-z]+)([0-9]+)’,0), – x=a3

regexp_extract(‘https://detail.tmall.com/item.htm?spm=608.7065813.ne.1.Ni3rsN&id=522228774076&tracelog=fromnonactive’,‘id=([0-9]+)’,0), – id=522228774076

regexp_extract(‘https://detail.tmall.com/item.htm?spm=608.7065813.ne.1.Ni3rsN&id=522228774076&tracelog=fromnonactive’,‘id=([0-9]+)’,1), – 522228774076

regexp_extract(‘http://a.m.taobao.com/i41915173660.htm’,‘i([0-9]+)’,0), – i41915173660

regexp_extract(‘http://a.m.taobao.com/i41915173660.htm’,‘i([0-9]+)’,1) – 41915173660

select regexp_extract(‘hitdecisiondlist’,‘(i)(.*?)(e)’,0) ;

结果:itde

select regexp_extract(‘hitdecisiondlist’,‘(i)(.*?)(e)’,1) ;

结果:i

select regexp_extract(‘hitdecisiondlist’,‘(i)(.*?)(e)’,2) ;

结果:td

select regexp_extract(‘x=a3&x=18abc&x=2&y=3&x=4’,‘x=([0-9]+)([a-z]+)’,2) from default.dual;

结果:abc

提取固定数字

提取没有清洗数值中的数字部分

存在没有清洗的数值value
1、示例内容:
‘身份证号 : 0123456789876543210,完毕’
由 汉字+标点+数字+标点+汉字 组成
2、我们只想提取其中部分数字内容

select regexp_extract('身份证号 : 0123456789876543210,完毕','.*([0-9]{19}).*',1)
  • .* :代表任意多次匹配任意值
  • [0-9]:代表从0-9数字中匹配
  • {19}:代表匹配19次

返回:

0123456789876543210

提取手机号

select regexp_extract('身份证号 : 0123456789876543210,完毕,手机号:13012341234','.*([1][35678][0-9]{9}).*$',1)
  • 手机号是规则的,11位,并且1开头[35678]是第二位
  • [35678]:代表手机号的第二位,也可自行修改
  • [0-9]:代表匹配0-9数字
  • {9}:代表剩余的9位数字匹配九次

返回:

13012341234

split_part

select split_part (‘/abc/required_string/2/’, ‘/’, 3)
返回:required string

SUBSTRING_INDEX

select 
SUBSTRING_INDEX('#住宿和餐饮业#餐饮业#餐饮#河北省#保定市#雄县', '#', 2),
SUBSTRING_INDEX(SUBSTRING_INDEX('#住宿和餐饮业#餐饮业#餐饮#河北省#保定市#雄县', '#', 2), '#', -1) AS result,
SUBSTRING_INDEX('#住宿和餐饮业#餐饮业#餐饮#河北省#保定市#雄县', '#', 3),
SUBSTRING_INDEX(SUBSTRING_INDEX('#住宿和餐饮业#餐饮业#餐饮#河北省#保定市#雄县', '#',3), '#', -1) AS result2
"_c0"	"result"	"_c2"	"result2"
"#住宿和餐饮业"	"住宿和餐饮业"	"#住宿和餐饮业#餐饮业"	"餐饮业"
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐