李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
18.Hive正则表达式详解
Leefs
2021-12-14 PM
2614℃
0条
[TOC] ### 前言 当真正使用Hive处理数据的时候,往往需要使用正则表达式来对数据做一些过滤操作,本篇将通过一些示例介绍一下Hive中的正则表达式的使用。 ### 一、正则匹配 #### LIKE **语法** > A LIKE B **操作类型:** strings **返回类型:** boolean或null **描述** + 如果字符串A或者字符串B为NULL,则返回NULL; + 如果字符串A符合表达式B的正则语法,则为TRUE,否则为FALSE; + B中字符"`_`"表示任意单个字符,而字符"`%`"表示任意数量的字符。 ```sql hive> select 'football' like '%ba'; OK false hive> select 'football' like '%ba%'; OK true hive> select 'football' like '__otba%'; OK true ``` #### RLIKE **语法** > A RLIKE B **操作类型:** strings **返回类型:** boolean或null **描述** + 如果字符串A或者字符串B为NULL,则返回NULL; + 如果字符串A符合正则表达式B的正则语法,则为TRUE;否则为FALSE。 ```sql hive> select 'football' rlike 'ba'; OK true hive> select 'football' rlike '^footba'; OK true hive> select 'does' rlike 'do(es)?'; OK true hive> select '2314' rlike '\\d+'; OK true ``` **正则表达式** | 字符 | 说明 | | ---- | ------------------------------------------------------------ | | ^ | 匹配一个输入或一行的开头 | | . | 任意单个字符 | | * | 匹配前面的字符0次或多次 | | + | 匹配前面的字符1次或多次 | | ? | 匹配前面的字符0次或1次 | | \d | 等于 [0-9],使用的时候写成'\\d' | | \D | 等于 `[^0-9]`,使用的时候写成'\\D' | | \w | 匹配字母、数字、下划线,等价于[A-Za-z0-9_] | | \W | 匹配非字母、数字、下划线,等价于`[^A-Za-z0-9_]` | | () | 标记一个子表达式的开始和结束的位置,括号内表示一个连续的表达式;如果要匹配小括号,需要用\转义,例如:() | | [] | 定义匹配的字符范围,例如:[a-zA-Z]表示匹配大小写英文字符 | | {} | 定义匹配范围的长度,例如:{1}表示匹配一次,{1,}表示匹配大于等于1次,{2,3}表示匹配大于等于2小于等于3次 | #### REGEXP **语法** > A REGEXP B **操作类型:** strings **返回类型:** boolean或null **描述** + 功能与RLIKE相同 ```sql hive> select 'football' regexp 'ba'; OK true hive> select 'football' regexp '^footba'; OK true ``` #### REGEXP_REPLACE **语法** > regexp_replace(string A, string B, string C) **操作类型**: strings **返回值**: string **描述** + 将字符串A中的符合正则表达式B的部分替换为C。 ```sql hive> select regexp_replace('h234ney', '\\d+', 'o'); OK honey ``` #### REGEXP_EXTRACT **语法** > regexp_extract(string subject, string pattern, int index) + subject:待解析的字符串或者字符串类型的字段; + pattern:正则表达式 + index:返回结果取表达式的哪一部分(默认值为1)。 + 0:表示把整个正则表达式对应的结果全部返回; + 1:表示返回正则表达式中第一个() 对应的结果; + 2:表示返回正则表达式中第二个() 对应的结果。 **返回值:** string **描述** + 将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符,index从1开始计。 ```sql hive> select regexp_extract('honeymoon', 'hon(.*?)(moon)', 0); OK honeymoon hive> select regexp_extract('honeymoon', 'hon(.*?)(moon)', 1); OK ey hive> select regexp_extract('honeymoon', 'hon(.*?)(moon)', 2); OK moon ``` *附原文链接地址:* *https://blog.csdn.net/Kikitious_Du/article/details/91441639*
标签:
Hadoop
,
Hive
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://www.lilinchao.com/archives/1743.html
上一篇
17.Hive行转列和列转行
下一篇
SparkSQL导入导出Excel文件
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
43
标签云
数据结构
FileBeat
Azkaban
Spring
Flink
Golang
Docker
高并发
Typora
Jquery
FastDFS
LeetCode刷题
ClickHouse
JVM
ajax
CentOS
工具
序列化和反序列化
Linux
Jenkins
排序
Golang基础
字符串
VUE
Zookeeper
Spark
数学
人工智能
容器深入研究
持有对象
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞