正则表达式在Hive SQL中的应用

一、简介

1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。随后,发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson是Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。发展到后来,许多种工具都支持正则表达式(文本编辑器、文字处理软件、系统工具、数据库引擎,等等),不过,要想充分挖掘正则表达式的能力,还是应当将它作为编程语言的一部分。例如Java、JScript、Visual Basic、VBScript、JavaScript、ECMAScript、C、C++、C#、elisp、Perl、Python、Tcl、Ruby、PHP、sed和awk。事实上,在一些用上述语言编写的程序中,正则表达式扮演了极其重要的角色。

二、语法
  1. 普通字符

    • 数字:[0-9]

      select '123' rlike '[0-9]'  -- true
      
    • 字母 : [a-z]、[A-Z]

      select 'abc' rlike '[a-z]'  -- true
      select 'ABC' rlike '[A-Z]'  -- true
      select 'aBcD' rlike '[a-zA-Z]'  -- true
      
    • 汉字:[\u4e00-\u9fa5]

      select '正则表达式' rlike '[\u4e00-\u9fa5]'  -- true
      
    • 下划线及没有特殊定义的标点符号

      select 'abc_123' rlike '_'  -- true
      select 'abc/123' rlike '/'  -- true
      select 'abc 123' rlike ' '  -- true
      ...
      
  2. 常用的转译字符

    转译字符含义
    \\n换行
    \\t制表符
    \\\\\ 本身
    \\( , \\[ , \\{ , \\? , \\+ , \^ , \\$ , \\* , \\. 等( , [ , { , ? , + , ^ , $ , * , . 等
  3. 标准字符集合

    字符含义说明
    \\d数字合集等效于[0-9]
    \\w数字,字母,下划线合集等效于[0-9a-zA-Z_]
    \\s空格,换行符,制表符等空白字符集合
    .小数点可以以匹配除换行符之外的任意字符类似于like的 _
  4. 边界字符

    字符例子含义
    ^rlike ‘^a’匹配以a开头的字符串
    $rlike ‘0$’匹配以0结尾的字符串
  5. 量词

量词含义说明(举例)
{n}表达式重复n次匹配任意四个字母:rlike ‘[a-zA-Z]{4}’
{n,}表达式至少重复n次匹配任意六位及六位以上的数字:rlike ‘[0-9]{6,}’
{n,m}表达式至少重复n次,至多重复m次匹配任意的二到四位的数字:rlike ‘\\d{2,4}’
?匹配表达式0次或1次等效于 {0,1}
+表达式至少重复一次等效于 {1,}
*表达式不出现或重复任意次等效于 {0,}
  1. 自定义字符合集
    [ ]方括号匹配方式,能够匹配方括号中任意一个字符:

    1: rlike '[1GTU]'  -- 匹配1或G或T或U2rlike '[^abc]'  -- 匹配除a,b,c外的任意字符3rlike '[c-f]'  -- 匹配c至f的任意小写字母4rlike '[^1-3A-C]'  -- 匹配除1到3,A到C之外的任意字符
    
  2. 常用正则表达式合集

  3. 项目中正则使用实例

    在这里插入代码片
    
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值