hive正则表达式的用法

regexp_replace用法
1.  截取字符串中的汉字部分:
举个栗子:select regexp_replace('七夕节comming!来啦','([^\\u4E00-\\u9FA5]+)','') from dual;
结果:七夕节来啦

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

举个栗子:select regexp_replace('wo爱你123CHINA中国!','([^a-zA-Z0-9]+)','') from dual
结果:wo123CHINA

 3. 指明两项之间的一个选择。例子'([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。

栗子: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
posted @ 2019-09-03 17:25  db_record  阅读(33741)  评论(0编辑  收藏  举报