Hive正则表达式

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

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

一、regexp

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

 select '四川办' regexp '川办';
 select '四川办' regexp '湖南';

返回结果:

true
false

二、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+', '一');

返回结果:

四川办第一名

三、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,元字符匹配

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

2,位置匹配

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

3,频率匹配

(*) 表示匹配重复0次或多次
(+) 表示匹配重复一次或更多次
(?) 表示匹配重复0次或1次
({n}) 表示匹配重复n次
({n,}) 表示重复n次或更多次
({n,m}) 表示重复n到m次
正则表达式可以根据不同的需求,找到适合自己的函数,以及规则一起搭配使用。
正则表达式的使用就分享到这里了,我是喵~~,一起交流学习哇!
相关文章
|
4月前
|
SQL JSON Java
Hive【Hive(四)函数-单行函数】
Hive【Hive(四)函数-单行函数】
|
4月前
|
SQL 存储 Java
Hive【Hive(八)自定义函数】
Hive【Hive(八)自定义函数】
|
8天前
|
SQL 存储 分布式数据库
【Hive】Hive有索引吗?
【4月更文挑战第14天】【Hive】Hive有索引吗?
|
3月前
|
SQL 数据库 HIVE
hive宽表窄表互转
hive宽表窄表互转
|
4月前
|
SQL 分布式计算 Java
Hive【Hive(三)查询语句】
Hive【Hive(三)查询语句】
|
5月前
|
SQL 存储 Java
Hive教程(04)- Hive数据类型
Hive教程(04)- Hive数据类型
83 0
|
5月前
|
SQL 存储 分布式计算
Hive教程(01)- 初识Hive
Hive教程(01)- 初识Hive
53 0
|
9月前
|
SQL HIVE
Hive 常用函数
Hive 常用函数
82 0
|
10月前
|
SQL HIVE
Hive 运算符总结
Hive 运算符总结
|
11月前
|
SQL 分布式计算 关系型数据库