一、元字符
(摘自百度百科)

符号 描述
. 匹配除“\n”和"\r"之外的任何单个字符
[a-z] 字符范围,匹配指定范围内的任意字符
[0-9] 数字集合,匹配0到9的任意数字
[xyz] 字符集合,匹配所包含的任意一个字符,x、y、z可为任意字符,[]内()无意义
| 或,[x|y]匹配x或y,等价于[xy]
^ ^仅在[]内表示取反,如[^xyz] 为不包含x或y或z的任意字符,[^a-z]为不含包英文字母a到z的任意字符, ^[0-9]为任意非数字
\d 匹配一个数字字符,等价于[0-9]
\D 匹配一个非数字字符,等价于[^0-9] ,将字母大写表示在原意下取反,下同
\w 匹配包括下划线的任何单词字符,等价于[A-Za-z0-9_](经核验非英文字符已不受影响,完全等价)
\W 匹配任何非单词字符。等价于[^A-Za-z0-9_]
\cx 匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符
\f 匹配一个换页符,等价于\x0c和\cL
\n 匹配一个换行符,等价于\x0a和\cJ
\r 匹配一个回车符,等价于\x0d和\cM
\s 匹配任何不可见字符,包括空格、制表符、换页符等等,等价于[ \f\n\r\t\v]。
\S 匹配任何可见字符,等价于[^ \f\n\r\t\v] 。
\t 匹配一个制表符,等价于\x09和\cI
\v 匹配一个垂直制表符,等价于\x0b和\cK
* 匹配前面的子表达式任意次
+ 匹配前面的子表达式一次或多次(大于等于1次)
? 匹配前面的子表达式零次或一次 ;当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串
{n} 匹配确定的n次
{n,} 至少匹配n次
^ 匹配输入字行首或取反
$ 匹配输入行尾
\b 匹配一个单词的边界,也就是指单词和空格间的位置(即正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里的\b就是匹配位置的)
\B 匹配非单词边界
(?:pattern) 非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用
(?=pattern) 非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用
(?!pattern) 非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用
(?<=pattern) 非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反
(?<!pattern) 非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反

二、案例
hive正则可以在regexp_extract、regexp_replace等函数中使用,具体案例如下:
(以下案例如要为方法展示,未必是最优解,如有疏漏,欢迎斧正)

案例一:简单匹配电话号码(涉及位置、循环匹配)
匹配出电话号码,电话号码必须1开头且为11位,即表中第1、3、5条记录

TEl autoid
185****2546 1
182****25466 2
150****6623 3
550****9542 4
136****7053 5
select regexp_extract(lower(tel),'(^1[3-9]\\d{9}$)',0) as tel_number;

关键代码解读:
1)国内电话号码已1开头,且第二位在3-9之间,所以有^1[3-9]
2)除上述两位数字外,其余还有9位,所以有\d{9},且以加上结尾符号$
3)可以使用或条件进行更加严格的手机号匹配

案例二:匹配系统型号(涉及或、循环、非获取匹配)
匹配系统名称,安卓系统版本大于5.0,IOS系统版本大于6.0,即表中第2、4、5条记录

value autoid
android5.1.5 1
android7.1.2 2
ios6.6 3
ios8.1 4
ios11.4 5
select regexp_extract(lower(value),'((android)(?=([6-9]|[1-9][0-9])[.0-9]+))|((ios)(?=([8-9]|[1-9][0-9])[.0-9]+))',0) as osname;

关键代码解读:
1)要同时匹配android和ios,所以使用“|”做或处理
2)需要匹配系统名称但不需要系统版本,所以使用非获取匹配(?=pattern),即查找字符但不获取
3)因安卓系统版本大于5.0,IOS系统版本大于6,所以android后接6-9或者10-99,ios同理
4)因系统版本有子版本,对点加数字([.0-9])做贪婪匹配

案例三:匹配多次出现字符(反向引用)
某投球活动,有四个命中点,用户第一次投中某命中点后,后续至少再投中该点两次,一共四次机会,匹配出所有完成任务的记录,即第1、4条记录

result autoid
aaba 1
abac 2
bdab 3
dddd 4
cdab 5
select regexp_extract(result,'(^[a-d]).?\\1.?\\1.?',0) as tel_number;

关键代码解读:
1)通过()可以将匹配到的内容作为一个整体,该过程即为捕获组,捕获组中的内容在正则表达式内部进行引用即反向引用
2)\1表示第一个()匹配到的内容,如果有第二个()则可用\2表示第二个()匹配到的内容,后续同理

Hive正则表达式案例相关推荐

  1. Hive正则表达式案例总结

    正则匹配全部汇总: 1.匹配中文:[\u4e00-\u9fa5] 2.英文字母:[a-zA-Z] 3.数字:[0-9] 4.匹配中文,英文字母和数字及下划线:^[\u4e00-\u9fa5_a-zA- ...

  2. hive正则表达式匹配中文或者字符

    hive正则表达式匹配中文或者字符 regexp_replace() regexp_extract() regexp_replace() 案例1: select regexp_replace('四川成 ...

  3. 2021年大数据Hive(十二):Hive综合案例!!!

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive综合案例 一.需求描述 二.项目表的字段 三.进 ...

  4. Scala进阶之路-正则表达式案例

    Scala进阶之路-正则表达式案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 废话不多说,正则大家都很清楚,那在Scala如何使用正则了?我们直接上个案例,如下: 1 /* 2 ...

  5. hive 正则表达式

    https://www.runoob.com/regexp/regexp-syntax.html 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用 ...

  6. 正则表达式案例练习-封装工具函数歌词解析和时间格式化

    文章目录 正则表达式案例练习 案例一: 歌词解析 案例二: 时间格式化 正则表达式案例练习 案例一: 歌词解析 我们模拟从服务器拿到歌词, 要求根据歌曲播放的时间展示对应的歌词 我们从服务器获取过来的 ...

  7. 通过Hive的案例了解Hive在工作中的使用

    通过Hive的案例了解Hive在工作中的使用 笔者学习了HIve有一阵子时间了,但是碍于缺乏项目的实战,所以HQL写的总是别别扭扭,所幸通过一个案例似乎打通了一些对于HiveSQL使用的一些疑惑,故通 ...

  8. Python正则表达式案例一则:单词非两端字符改为小写

    问题描述:给定一段英文,要求把其中所有单词除两端字符之外的其他字母都改为小写. 技术要点: 1)re模块的sub()函数用法: 2)match对象的group()方法. 参考代码: 运行结果: abc ...

  9. 大数据学习(十三)hive正则表达式

    一.hive支持正则的函数 regexp:用法类似rlike,比如在where里面判断 A regexp B regexp_extract:regexp_extract(string subject, ...

最新文章

  1. AI项目成功的4要素
  2. 迅雷离线工具 小众雷友 测试版
  3. 在用dw.GetSqlSelect()获得到的Sql语句出现PBSELECT( VERSION的解决办法
  4. [bbk4343]小布-OCP 042全真试题讲解
  5. Oracle 屠刀下的 Java 软件公司怎么活?
  6. Zookeeper知识
  7. 海量数据挖掘MMDS week2: 频繁项集挖掘 Apriori算法的改进:非hash方法
  8. Java基础IO流(知识体系详解)【五】
  9. php生成黑链,网站被黑链接(进入黑网最有效办法)
  10. python can通信_Python中的高级/抽象Canbus接口
  11. webpack打包UMD学习记录
  12. kafka集群搭建并验证(个人亲手搭建,真实有效)
  13. uniapp上拉加载
  14. r52500u学计算机,r52500u相当于i几
  15. 温柔末世,慢慢到来的末日
  16. Struts 2 studing
  17. chmod +x 与chmod 777 的超详细解说
  18. Free Lossless Audio Codec
  19. BDSN数据存储服务节点激励通证TYB将于6月21日正式上线
  20. 网络渗透测试实验三——XSS和SQL注入

热门文章

  1. Effective_STL 学习笔记(三十一) 了解你的排序选择
  2. 天气预报数据保存APP的制作
  3. 北京软件开发商城app系统软件开发大概多少钱
  4. 开源社区的由来(转载)
  5. 大南湖地磅房升级需要改造哪些方面
  6. 简单观察HoudiniAssetComponent状态(AssetState)的变化过程
  7. 半导体精密划片机行业介绍及市场分析
  8. 一次ORA-03113错误解决
  9. 为什么神经元有数千个突触,一个新皮质中的序列记忆理论(HTM算法基础)
  10. 硅谷送货机器人:脚下的路不好走