当前位置:   article > 正文

Hive正则表达式_hive 正则

hive 正则

前段时间,在我们数据开发的过程中,因为没有现成的数据表,导致数据没有办法直接取,需要解析日志的内容,从日志里面拿到我们想要的数据,但是日志的内容并没有那么的规则,这个时候,正则表达式就展现出很大的优势,正好我也把正则表达式温习实践了一遍,正好整理下来。

hive支持的正则表达式有三种,分别是regexp、regexp_replace、regexp_extract

一、regexp

1,语法格式: A REGEXP B
释义:A是需要匹配的字符串,B是正则表达式字符串
返回结果:boolean或null
示例SQL:

 select '四川办' regexp '川办';
 select '四川办' regexp '湖南';
  • 1
  • 2

返回结果:

true
false
  • 1
  • 2

二、regexp_replace

1,语法格式: regexp_replace(string A, string B, string C)
2,释义:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数。
示例SQL:

select regexp_replace('四川办第1名', '\\d+', '一');
  • 1

返回结果:

四川办第一名
  • 1

三、regexp_extract

1,语法格式:regexp_extract(string subject, string pattern, int index)
2,释义:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符,index从1开始计。
示例SQL:

select regexp_extract('四川办:第1名', '([0-9]+)', 1);
  • 1

返回结果:

1
  • 1

四、常用的正则表达式规则:

1,元字符匹配

(.)   表示匹配除换行符以外的任意字符。
(\w) 表示匹配字母、下划线、数字 (\W匹配汉字)
(\d) 表示匹配数字
(\s) 表示匹配任意的空白符(tab 换行 空格)
([ ])  表示匹配方括号中任一字符
([^匹配内容]) 表示不匹配方括号中任一字符
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2,位置匹配

(^) 表示匹配字符串的开始,空值:^$
($) 表示匹配字符串的结束
(\b) 表示匹配单词的开始或结束。
(\B) 表示匹配非单词的开始或结束
  • 1
  • 2
  • 3
  • 4

3,频率匹配

(*) 表示匹配重复0次或多次
(+) 表示匹配重复一次或更多次
(?) 表示匹配重复0次或1({n}) 表示匹配重复n次
({n,}) 表示重复n次或更多次
({n,m}) 表示重复n到m次
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

正则表达式可以根据不同的需求,找到适合自己的函数,以及规则一起搭配使用。
正则表达式的使用就分享到这里了,我是喵~~,一起交流学习哇!

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

闽ICP备14008679号