李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
18.Hive正则表达式详解
Leefs
2021-12-14 PM
2714℃
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://lilinchao.com/archives/1743.html
上一篇
17.Hive行转列和列转行
下一篇
SparkSQL导入导出Excel文件
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
SQL练习题
JavaSE
Filter
机器学习
容器深入研究
微服务
字符串
Git
MyBatis-Plus
队列
序列化和反序列化
Spark Core
Linux
二叉树
Netty
LeetCode刷题
Jquery
数据结构
栈
工具
Redis
国产数据库改造
FileBeat
Flink
高并发
JavaWEB项目搭建
ClickHouse
Jenkins
持有对象
Elastisearch
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞