Hive 正則匹配函數 regexp_extract

1。regexp_extract

語法:    regexp_extract(string subject,  string pattern,  int index)正則表達式

返回值: stringsql

說明:  將字符串subject按照pattern正則表達式的規則拆分,返回index指定的字符。cors

第一參數:   要處理的字段post

第二參數:    須要匹配的正則表達式spa

第三個參數:code

  • 0是顯示與之匹配的整個字符串
  • 1 是顯示第一個括號裏面的
  • 2 是顯示第二個括號裏面的字段...

 

注意,在有些狀況下要使用轉義字符(雙斜槓了‘\\’)。regexp

舉例:

1
2
3
4
5
6
7
8
9
10
11
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
 
from test.dual;

 

正則匹配字符解釋:

  • ^ 表示開頭
  • $ 表示結尾
  • . 表示任意字符
  • * 表示任意多個

2。手機號清洗:

 regexp_replace(mobile,'[^0-9]','')    regexp '1[0-9]{10}'  返回true,則爲好的手機號。htm

 

具體使用:blog

select id,name,corse,time,
regexp_extract(name,'li":(.*?),"z',1) as price,
from student
where time='20170703'
limit 100ci

相關文章
相關標籤/搜索