Hive正则表达式

news2024/12/24 11:28:27

Hive版本:hive-3.1.2

一、Hive的正则表达式概述

        正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。

      Hive的正则表达式灵活使用解决HQL开发过程中的很多问题,本篇文章主要对hive正则表达式的总结归纳。关系型数据库的正则表达式如下:

正则表达式 – 教程 | 菜鸟教程正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”),可以用来描述和匹配字符串的特定模式。 正则表达式是一种用于模式匹配和搜索文本的工具。 正则表达式提供了一种灵活且强大的方式来查找、替换、验证和提取文本数据。 正则表达式可以应用于各种编程语言和文本处理工具中,如 JavaScript、Python、Java、Perl 等。 ..icon-default.png?t=N7T8https://www.runoob.com/regexp/regexp-tutorial.html     Hive支持如下正则表达式:

  • like
  • rlike
  • regexp
  • regexp_extract
  • regexp_replace

1.1 字符集合

字符描述
[a-z]字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符
[A-Z]'[A-Z]' 可以匹配 'A' 到 'Z' 范围内的任意大写字母字符
[^a-z]匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符
\d匹配一个数字字符,等价于[0-9],匹配所有的数字 
\D匹配一个非数字字符,等价于[^0-9]
\w匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'
\W匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]
\f匹配一个换页符。
\n匹配一个换行符。等价于 \x0a 和 \cJ
\r匹配一个回车符。等价于 \x0d 和 \cM

1.2 边界集合

字符描述
^每一行的开头,单行模式下等价于字符串的开头
$每一行的结尾,单行模式下等价于字符串的结尾

1.3 量词(重复次数)集合

字符描述
*匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}
+匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}
?匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 。? 等价于 {0,1}
{n}n 是一个非负整数。匹配确定的 n 次。例如,'o{2}'能匹配 "food" 中的两个 o
{n,}n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 能匹配 "foooood" 中的所有 o
{n,m}m 和n均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o

1.4  转义操作符

字符描述
\将下一个字符标记为一个特殊字符、或一个原义字符等。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符

1.5 运算符优先级

      正则表达式从左到右进行计算,并遵循优先级顺序。相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序:

运算符描述示例
转义符\\ 是用于转义其他特殊字符的转义符号。它具有最高的优先级。\d 匹配数字,\. 匹配点号
圆括号() 圆括号()用于创建子表达式,具有高于其他运算符的优先级。(abc)+ 匹配 "abc" 一次或多次
量词
*, +, ?, {n}, {n,}, {n,m}
量词指定前面的元素可以重复的次数。a* 匹配零个或多个 "a"
定位点^, $^ 表示行的开头,$ 表示行的结尾
管道符号| | 表示"或"关系,用于在多个模式之间选择一个cat|dog 能够匹配到 "cat" 或 "dog"

   举例:\d{2,3}|[a-z]+(abc)* 的运算顺序
  • \d{2,3} 匹配两到三个数字
  • | 表示或
  • [a-z]+ 匹配一个或多个小写字母
  • (abc)* 匹配零个或多个 "abc"

二、Hive 正则表达式案例

2.1 like

  • 语法1: A like B    
  • 语法2: like(A, B)
  • 操作类型: strings
  • 返回类型:boolean或null
  • 描述:如果字符串A或者字符串B为null,则返回null;如果字符串A符合表达式B 的正则语法,则为true;否则为false。B中字符”_”表示任意单个字符,而字符”%”表示任意数量的字符
-- 举例:
select 'ahngnfg' like '%nfg'  --> true (%nfg也可以理解为以'nfg'结尾的字符)
select 'ahngnfg' like 'nfg%'  --> false(nfg%也可以理解为以'nfg'开头的字符)
select 'ahngnfg' like '%nfg%'  --> true (%nfg% 也可以理解为包含'nfg'的字符)

2.2 rlike

  • 语法1: A rlike B
  • 语法2: rlike (A, B)
  • 操作类型: strings
  • 返回类型: boolean或null
  • 描述: 如果字符串A或者字符串B为null,则返回null;如果字符串A符合JAVA正则表达式B的正则语法,则为true;否则为false。B中字符”_”表示任意单个字符,而字符”%”表示任意数量的字符
java正则:

"." 任意单个字符
"*" 匹配前面的字符0次或多次
"+" 匹配前面的字符1次或多次
"?" 匹配前面的字符0次或1次
"\d" 匹配一个数字字符,等于[0-9],使用的时候写成'\\d'
"\D" 匹配一个非数字字符,等于[^0-9],使用的时候写成'\\D'
-- 举例:
select '2314' rlike '\\d+';  --> true
select 'numrqe' rlike '^num'; --> true

2.3 regexp

  • 语法1: A regexp B
  • 语法2: regexp (A, B)
  • 操作类型: strings
  • 返回类型: boolean或null
  • 描述: 功能与rlike相同

测试案例:

-- 匹配有5个连续数字的字符串
with tmp1 as
(
select '12325abc' as rn
union all
select 'b91256ab56' as rn
union all
select 'bfs89abc21' as rn
)
select rn
  from tmp1
 where rn regexp '\\d{5}';

-- 匹配开头有3个及以上连续数字的字符
with tmp1 as
(
select '12325abc' as rn
union all
select '91fe56' as rn
union all
select 'bfs89abc21' as rn
)
select rn
  from tmp1
 where rn regexp '^\\d{3}';

-- 匹配开头只有3个连续数字的字符
with tmp1 as
(
select '12325abc' as rn
union all
select '912fe56' as rn
union all
select 'bfs89abc21' as rn
)
select rn
  from tmp1
 where rn regexp '^\\d{3}\\D';

2.4 regexp_replace正则替换

  • 语法: regexp_replace(string A, string B, string C)
  • 操作类型: strings
  • 返回值: string
  • 说明: 将字符串A中的符合java正则表达式B的部分替换为C。
-- 举例:
select regexp_replace('h234ney', '\\d+', 'fd'); --> hfdney

2.5 regexp_extract正则提取

  • 语法: regexp_extract(string A, string pattern, int index)
  • 返回值: string
  • 说明: 将字符串A按照pattern正则表达式的规则拆分,返回index指定的字符,index从1开始计
--举例:
select regexp_extract('honeymoon', 'hon(.*?)(oon)', 0); --> honeymoon
select regexp_extract('honeymoon', 'hon(.*?)(oon)', 1); --> eym
select regexp_extract('honeymoon', 'hon(.*?)(oon)', 2); --> oon

参考文章:

HIVE正则(like、rlike、regexp、regexp_replace、regexp_extract)_hive 正则化-CSDN博客

大数据开发之Hive篇12-Hive正则表达式_hive 正则-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1444143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+Vue的服装销售商城系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

无人机系统组装与调试,多旋翼无人机组装与调试技术详解,无人机飞控系统原理

多旋翼无人机飞控系统的组装 在开始组装前&#xff0c;确保您已准备好所有必要的工具和材料。这包括螺丝刀、电烙铁、焊台、杜邦线、飞控板、GPS模块、电机、桨叶等。 飞控安装 安全开关安装&#xff0c;将安全开关固定在机架上。将安全开关的线插到飞控SWITCH插口上。 电调…

如何从 iPhone 恢复已删除的视频:简单有效方法

无论您是在尝试释放空间时不小心删除了 iPhone 上的视频&#xff0c;还是在出厂时清空了手机&#xff0c;现在所有数据都消失了&#xff0c;都不要放弃。有一些方法可以恢复这些视频。 在本文中&#xff0c;我们将向您展示六种最有效的数据恢复方法&#xff0c;可以帮助您从 i…

直播app开发,技术驱动的实时互动新纪元

随着互联网技术的快速发展&#xff0c;直播已成为我们日常生活的重要组成部分。从娱乐、教育到商业活动&#xff0c;直播的广泛应用正在改变着我们的生活和工作方式。在这一变革中&#xff0c;直播开发扮演着至关重要的角色。本文将探讨直播开发的核心理念、技术挑战以及未来的…

离散数学——图论(笔记及思维导图)

离散数学——图论&#xff08;笔记及思维导图&#xff09; 目录 大纲 内容 参考 大纲 内容 参考 笔记来自【电子科大】离散数学 王丽杰

PacketSpy:一款功能强大的网络数据包嗅探、捕捉和分析工具

关于PacketSpy PacketSpy是一款功能强大的网络数据包嗅探工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以轻松捕捉并分析目标网络系统中的流量。PacketSpy提供了跟网络流量安全相关的全面功能&#xff0c;可以用于检查HTTP请求与响应、查看原始Payload数据、以…

web前后端小坑记录

游戏服务器过年这段时间忙完了&#xff0c;好久没看web了&#xff0c;重温一下。发现竟然没有文章记录这些修BUG的过程&#xff0c;记录一下。 目录 如何处理F5刷新&#xff1f; 如何处理F5刷新&#xff1f; 后端应该发现路由不存在&#xff0c;直接返回打包好的index.html就…

腾讯云4核8G服务器够用吗?容纳多少人同时访问?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

steam搬砖项目免费分享,学会即可上手

亲身体验过很多互联网微创业项目&#xff0c;steam搬砖项目我愿称之为最强副业&#xff01;如果你每天有1-2小时的空闲时间&#xff0c;那我非常建议你试试这个。两个平台之间搬运下装备就能进账&#xff0c;努力点月入几千还是完全没问题的。 steam搬砖怎么赚钱&#xff1f;做…

【Spring框架】Spring事务同步

目录 一、什么是Spring事务同步 二、 事务同步管理器 2.1 TransactionSynchronizationManager事务同步管理器 2.1.1 资源同步 2.1.2 事务同步 2.1.3 总结 三、事务同步管理器保障事务的原理 四、spring事务为何使用TransactionSynchronizationManager spring源码实现 …

哪家洗地机比较好用?性能好的洗地机推荐

在众多功能中&#xff0c;我坚信洗地机的核心依旧是卓越的清洁能力以及易于维护的便捷性&#xff0c;其他的附加功能可以看作是锦上添花&#xff0c;那么如何找到性能好的洗地机呢&#xff1f;我们一起看看哪些洗地机既能确保卫生效果还能使用便利。 洗地机工作原理&#xff1…

【leetcode热题100】子集 II

给你一个整数数组 nums &#xff0c;其中可能包含重复元素&#xff0c;请你返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。返回的解集中&#xff0c;子集可以按 任意顺序 排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,2] 输出…

基于javaEE的ssm仓库管理系统

仓库管理系统的重中之重是进销存分析这一板块&#xff0c;在这一板块中&#xff0c;顾名思义能够查询到近期的进货记录&#xff0c;包括每日的进货单据&#xff0c;单品推移(即某一商品的库存变化)&#xff0c;方便我们核对库存差异。同时也需要查询到每日的销售数据&#xff0…

Linux服务器安装Jenkins

1、安装Jenkins前必须先安装jdk与maven 2、下载Jenkins 安装包地址 linux jenkins 链接: 百度网盘 请输入提取码 提取码: zfyq 3、解压压缩包 rpm -ivh jenkins-2.174-1.1.noarch.rpm 4、解压完成后查看Jenkins安装路径 whereis jenkins 5、启动报错 &#xff0c;这是因为Jenki…

vs2013与对应的opencv3.2下载地址和环境配置

Visual Studio community 2013 • 链接&#xff1a; https://pan.baidu.com/s/1ye-EDDyUGsy8EaZKaq9Ksw 提取码&#xff1a; 06lw -- 来自百度网盘超级会员 V7 的分享 • 也可以从下面官网下载 https://learn.microsoft.com/zh-tw/visualstudio/releasenotes/vs2013-communit…

前端JavaScript篇之对象创建的方式有哪些?

目录 对象创建的方式有哪些&#xff1f;1. 工厂模式&#xff1a;2. 构造函数模式&#xff1a;3. 原型模式&#xff1a;4. 混合模式&#xff1a;5. 动态原型模式&#xff1a;6. 寄生构造函数模式&#xff1a;7. 字面量方式&#xff1a; 对象创建的方式有哪些&#xff1f; JavaS…

RUST入门:如何用vscode调试rust程序

RUST已经流行一阵子了&#xff0c;但是比较系统的IDE介绍还是比较少&#xff0c;这里我简单介绍 一下如何用vscode实现单步调试rust程序&#xff0c;就像我们平时调试c程序一样。 学习资料网站 首先&#xff0c;介绍几个学习rust的好网站&#xff0c; Rust程序设计语言Rust语…

vue.js基于springboot的实验室设备管理系统10345

(1)设备信息模块&#xff1a;记录设备的基本信息&#xff0c;如设备采购来源信息、设备需求量、当前数量、日期等。 (2) 用户模块&#xff1a;教师职工。实现对用户个人信息、消息管理和实验室设备的查询使用申请等。 (3) 管理员模块&#xff1a;实现对所有设备信息的增删改查&…

论文笔记:相似感知的多模态假新闻检测

整理了RecSys2020 Progressive Layered Extraction : A Novel Multi-Task Learning Model for Personalized Recommendations&#xff09;论文的阅读笔记 背景模型实验 论文地址&#xff1a;SAFE 背景 在此之前&#xff0c;对利用新闻文章中文本信息和视觉信息之间的关系(相似…

迅为RK3588开发板ubuntu和window互传图形界面直接拖拽进行文件传输

确保以及安装了 VMware Tools。如下图所示表示已安装过了。 和 windows 端文件夹间传输一样直接拖拽进去即可&#xff0c;如下图所示&#xff1a; 也可拖拽到终端&#xff0c;如下图所示&#xff1a; 更多内容可以B站搜索迅为RK3588开发板