赞
踩
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来判断字符串是否包含某种子串、字符串本身是否符合某种模式、将匹配的子串替换、从字符串中取出符合某个条件的子串等。
regexp和rlike都可以实现该功能,唯一的区别是使用方法不一样
- select regexp('字符串','模式子串')
-
- select '字符串' rlike '模式子串'
select 'this is 正则表达式' rlike '\\u4E00-\\u9FFF';
判断字符串本身是否符合某种模式,则在正则表达式加上开头、结尾限制即可
select regexp('12343','^\\d+$');
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}$')
正则解释:正则表达式 - 匹配 IPV4地址_AI算法攻城狮的博客-CSDN博客_正则表达式匹配ipv4
- 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}$';
- select '2400:89c0:6000:2:643f:b740:28e3:df35' regexp '([a-zA-Z0-9]{1,4}(\\:[a-zA-Z0-9]{0,4}){1,7})';
select regexp_extract('https://www.baidu.com/a=1','https?://([-_a-z0-9\\.]+)');
select regexp_extract('中文123','([\\u4E00-\\u9FFF]+)',1);
select regexp_extract('4个2.0GHz','[0-9]+([.]{1}[0-9]+){0,1}',0);
select regexp_extract('我的邮箱是1234@qq.com','([a-z0-9\_\.\-]+)@([\da-z\.\-]+)\.([a-z\.]{2,6})',0);
- select regexp_extract('http://tool.chinaz.com/regex','(.*)/$',1);
- 或
- select CONCAT(parse_url(wap_url, 'PROTOCOL'),'://',parse_url(wap_url, 'HOST'),parse_url(wap_url, 'PATH'))
select regexp_extract('android 9.1.0','[0-9]+(.[0-9]+)*',0)
将匹配的子串替换为空,可以达到剔除的目标
select regexp_replace('2019-03-11','-','');
select regexp_replace('1/2','/','');
select regexp_replace('1\2','/\\/','');
select regexp_replace('123\nabc','\\n|\\t|\\r','');
关于转义字符,hive需要用两个\,shell+hive需要使用四个\
需要转义的特殊字符请参考
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。