hive正則表達式的用法

regexp_replace用法
1.  截取字符串中的漢字部分:
舉個栗子:select regexp_replace('七夕節comming!來啦','([^\\u4E00-\\u9FA5]+)','') from dual;
結果:七夕節來啦

  2.截取字符串中的字母和數字部分:([^xyz] 不匹配這個集合中的任何一個字符)code

舉個栗子:select regexp_replace('wo愛你123CHINA中國!','([^a-zA-Z0-9]+)','') from dual
結果:wo123CHINA

 3. 指明兩項之間的一個選擇。例子'([a-z]+|[0-9]+)$'表示全部小寫字母或數字組合成的字符串。regexp

栗子:SELECT regexp_replace('七夕節Coming666!','([a-z]+|[A-Z]+|[0-9]+)','') from dual字符串

結果:七夕節!
4. 匹配一個非字數字符(/D 等同於 [^0-9])
舉個栗子1:select regexp_replace('我愛你123zhongguo666!','(\\D+)','') from dual
結果:123666

regexp_extract用法(參數3取決於參數2()的數量,從0開始)
5. 截取字符串中的數字部分([xyz] 匹配這個集合中的任何一個字符)(/d 匹配一個字數字符)
舉個栗子:select regexp_extract('七夕節coming666','([0-9]+)',1) from dual
      or select regexp_extract('七夕節coming666','(\\d+)',1) from dual
結果:666
6.截取字符串中的字母部分
舉個栗子:select regexp_extract('七夕節Coming666','([a-zA-Z]+)',1) from dual;
結果:Coming
另注意一種方法:(\\W)匹配漢字   (\w) 表示匹配字母、下劃線、數字
例如:select regexp_extract('產險一級機構02','(\\W*)(\\w*)',1) from dual 
結果:產險一級機構
例如:select regexp_extract('產險一級機構02','(\\W*)(\\w*)',2) from dual 
結果:02
7 {n} 精確匹配n次
舉栗子1:select regexp_extract('我愛你123zhongguo666!','(你)(.*?)(6)',0) from dual
結果:你123zhongguo6
舉栗子2:select regexp_extract('我愛你123zhongguo666!','(你)(.*?)(6)',1) from dual
結果:你
舉栗子3:select regexp_extract('我愛你123zhongguo666!','(你)(.*?)(6)',2) from dual
結果:123zhongguo
舉栗子4:select regexp_extract('我愛你123zhongguo666!','(你)(.*?)(6)',3) from dual
結果:6
舉個栗子2:select regexp_extract('152天內有67天無通話記錄','([0-9]+)([^0-9]+)([0-9]+)',0) from dual
結果:152天內有67
舉個栗子3:select regexp_extract('152天內有67天無通話記錄','([0-9]+)([^0-9]+)([0-9]+)',1) from dual
結果:152
舉個栗子4:select regexp_extract('152天內有67天無通話記錄','([0-9]+)([^0-9]+)([0-9]+)',2) from dual
結果:天內有
舉個栗子5:select regexp_extract('152天內有67天無通話記錄','([0-9]+)([^0-9]+)([0-9]+)',3) from dual
結果:67
相關文章
相關標籤/搜索