语法: regexp_extract(string subject, string pattern, int index)
返回值: string
说明: 将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。
第一参数: 要处理的字段
第二参数: 需要匹配的正则表达式
第三个参数:
注意,在有些情况下要使用转义字符(双斜杠了‘\\’)。
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