当前位置:   article > 正文

【hive编程】正则表达式经典案例

【hive编程】正则表达式经典案例

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来判断字符串是否包含某种子串、字符串本身是否符合某种模式、将匹配的子串替换、从字符串中取出符合某个条件的子串等。

一、字符串是否包含某种模式子串(regexp或rlike)

regexp和rlike都可以实现该功能,唯一的区别是使用方法不一样

  1. select regexp('字符串','模式子串')
  2. select '字符串' rlike '模式子串'

1、字符串是否包含汉字

select 'this is 正则表达式' rlike '\\u4E00-\\u9FFF';

二、字符串本身是否符合某种模式

判断字符串本身是否符合某种模式,则在正则表达式加上开头、结尾限制即可

1、数字判断

select regexp('12343','^\\d+$');

2、经纬度判断

SELECT regexp('60.054845,30.324694','^([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*){1}\\,([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*){1}$')

3、判断IP是否合法

正则解释:正则表达式 - 匹配 IPV4地址_AI算法攻城狮的博客-CSDN博客_正则表达式匹配ipv4

  1. select '61.135.152.137' regexp '^((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}$';
  2. select '2400:89c0:6000:2:643f:b740:28e3:df35' regexp '([a-zA-Z0-9]{1,4}(\\:[a-zA-Z0-9]{0,4}){1,7})';

三、从字符串中提取符合某个条件的子串(regexp_extract)

1、域名提取

select regexp_extract('https://www.baidu.com/a=1','https?://([-_a-z0-9\\.]+)');

2、中文提取

select regexp_extract('中文123','([\\u4E00-\\u9FFF]+)',1);

3、小数or整数提取

 select regexp_extract('4个2.0GHz','[0-9]+([.]{1}[0-9]+){0,1}',0);

4、邮箱提取

select regexp_extract('我的邮箱是1234@qq.com','([a-z0-9\_\.\-]+)@([\da-z\.\-]+)\.([a-z\.]{2,6})',0);   

5、URL去参数

  1. select regexp_extract('http://tool.chinaz.com/regex','(.*)/$',1);
  2. select CONCAT(parse_url(wap_url, 'PROTOCOL'),'://',parse_url(wap_url, 'HOST'),parse_url(wap_url, 'PATH'))

6、提取版本号

select regexp_extract('android 9.1.0','[0-9]+(.[0-9]+)*',0)

三、将匹配的子串替换(regexp_replace)

将匹配的子串替换为空,可以达到剔除的目标

1、剔除日期的间隔符

select regexp_replace('2019-03-11','-','');

2、剔除/

select regexp_replace('1/2','/','');

3、剔除\

select regexp_replace('1\2','/\\/','');

4、剔除\n \t \r

select regexp_replace('123\nabc','\\n|\\t|\\r','');

关于转义字符,hive需要用两个\,shell+hive需要使用四个\

需要转义的特殊字符请参考

https://xingqijiang.blog.csdn.net/article/details/114538383

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/605133
推荐阅读
相关标签
  

闽ICP备14008679号