Hive中常用正则表达式的运用小结

在实际的应用中,通常需要在一些复杂的、没有规律的字符串中提取数据,这时候就需要用到正则表达式了,这次讲一下hive的正则表达式。

like

语法:A like B

说明:如果字符串A符合表达式B的正则语法,则为true,否则为flase。B中字符"_"表示任意单个字符,而字符"%"表示任意数量的字符。

例子:select 'AA123' like 'AA%';

结果:true

例子:select 'AAbbbbcccc' like '_A%';

结果:true

rlike

语法:A rlike B

说明:如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE,否则为FALSE。

例子:select 'AAbbbbcccc' rlike 'AA';

结果:true

regexp

语法: A REGEXP B

说明:用法和rike一样

例子:select 'AAbbbbcccc' regexp 'AA';

结果:true

regexp_replace

语法: regexp_replace(string A, string B, string C)

说明:将字符串A中的符合java正则表达式B的部分替换为C

例子:select regexp_replace('AA123bbcccc' ,'123','o');

结果:AAobbcccc

regexp_extract

语法: regexp_extract(string A, string pattern, int index)

说明:将字符串A按照pattern正则表达式的规则拆分,返回index指定的字符,index从1开始计。

  • 0是显示与之匹配的整个字符串
  • 1 是显示第一个括号里面的
  • 2 是显示第二个括号里面的字段
  • 3,4,5.....依次类推

例子:select regexp_extract('AA123bbcccc' ,'A{2}([1-9]{3})([a-z]{6})',0);

结果:AA123bbcccc

例子:select regexp_extract('AA123bbcccc' ,'A{2}([1-9]{3})([a-z]{6})',2);

结果:bbcccc

基础语法 "^([]{})([]{})([]{})$"

正则字符串 = "开始([包含内容]{长度})([包含内容]{长度})([包含内容]{长度})结束"

常用元字符的使用:


元字符


描述


\


转义字符。例如,“\n”代表换行符,如果想表示"\n"这个字符串,需要使用"\\n"来表示,也就是说"\\"代表字符"\"


^


匹配输入字行首。"^a"代表以a开头的任意字符串


$


匹配输入行尾。"a$"代表以a结尾的任意字符串


*


匹配前面的子表达式0次或多次。例如,ab*能匹配a,ab,abb,abbbb等等,等价于{0,}


+


匹配前面的子表达式一次或多次(大于等于1次)。例如,“ab+”能

匹配ab,abb,abbbb等等。等价于{1,}


?


匹配前面的子表达式零次或一次。例如,“ab?”可以匹配ab,abb,等价于{0,1}。当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串。例如,对于字符串“oooo”,“o+”将尽可能多地匹配“o”,得到结果[“oooo”],而“o+?”将尽可能少地匹配“o”,得到结果 ['o', 'o', 'o', 'o'],等价于{0,1}


{n}


n是一个非负整数。匹配确定的n次。例如,“a{2}”不能匹配到aa。


{n,}


n是一个非负整数。至少匹配n次。例如,“a{2,}”能匹配“aa,aaa等等。“a{1,}”等价于“a+”,“a{0,}”则等价于“a*”。


{n,m}


m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“a{1,3}”将匹配“aoooood”中的前三个o为一组,后三个o为一组。“a{0,1}”等价于“a?”。请注意在逗号和两个数之间不能有空格。


.


匹配除“\n”和"\r"之外的任何单个字符。要匹配包括“\n”和"\r"在内的任何字符,请使用像“[\s\S]”的模式。

_ 匹配任意单个字符,例如:_a 能匹配到任何第二个字符为a的,如aa,ba等等

x|y


匹配x或y。例如,“z|food”能匹配“z”或“food”。

“[z|f]ood”则匹配“zood”或“food”。


[xyz]


字符集合,匹配所包含的任意一个字符。

例如,“[abc]”可以匹配“plain”中的“a”。


[^xyz]


负值字符集合。匹配未包含的任意字符。例如“[^abc]”可以匹配“plain”中的“plin”任一字符。


[a-z]


字符范围,匹配指定范围内的任意字符。例如,“[a-z]”可以匹配

“a”到“z”范围内的任意小写字母字符。注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.


[^a-z]


负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。


\d


匹配一个数字字符。等价于[0-9]。


\D


匹配一个非数字字符。等价于[^0-9]。


\n


匹配一个换行符。


\r


匹配一个回车符。


\s


匹配任何不可见字符,包括空格、制表符、换页符等等。

等价于[ \f\n\r\t\v]。


\S


匹配任何可见字符。等价于[^\f\n\r\t\v]。


\t


匹配一个制表符。


\v


匹配一个垂直制表符。


\w


匹配包括下划线的任何单词字符。类似但不等价于“[A-Za-z0-9_]”,

这里的"单词"字符使用Unicode字符集。


\W


匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。

( )
将( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。

其他

汉字:[\u4e00-\u9fa5]

身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X:(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)

日期格式:^\d{4}-\d{1,2}-\d{1,2}

两位小数正数:[0-9]+(.[0-9]{2})

26个英文字母组成的字符串:[A-Za-z]+

数字和26个英文字母组成的字符串:[A-Za-z0-9]

Email地址:w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$

手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

到此这篇关于Hive中常用正则表达式的运用的文章就介绍到这了,更多相关Hive正则表达式运用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 一文了解Hive是什么

    目录 一.Hive介绍 Hive的优缺点 Hive架构 Hive用户接口 Hive元数据的三种存储模式 Hive数据存储 架构原理 Hive文件格式 Hive本质 Hive工作原理 Hive数据类型 一.Hive介绍 hive: 由 Facebook 开源用于解决海量结构化日志的数据统计工具. Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能. Hive的优缺点 优点: 类似于SQL语句,简单学习易上手 避免了去写 MapRedu

  • 运用正则表达式匹配所有表名

    正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 写出匹配SQL语句中的所有表名,备忘记录 折磨了好久,正则表达式如下: 复制代码 代码如下: \*\s+from\s+[\w\[\]]*\.?[\w\[\]]*\.?\[?(\b\w+)\]?[\r\

  • Freemaker Replace函数的正则表达式运用

    replace(param1,param2,param3) param1 正则表达式:param2 将匹配的字符替换成指定字符:param3 模式 param3 参数如下 模式 i r m s c f replace 支持 支持 只和r 组合 只和r 组合 只和r 组合 支持 模式解释: i: Case insensitive: 忽略大小写 f: First only. That is, replace/find/etc. only the first occurrence of somethi

  • 正则表达式初运用之认证界面的实现代码

    先给大家展示下效果图: 关键代码如下所示: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Examples</title> <meta name="d

  • Hive中常用正则表达式的运用小结

    在实际的应用中,通常需要在一些复杂的.没有规律的字符串中提取数据,这时候就需要用到正则表达式了,这次讲一下hive的正则表达式. like 语法:A like B 说明:如果字符串A符合表达式B的正则语法,则为true,否则为flase.B中字符"_"表示任意单个字符,而字符"%"表示任意数量的字符. 例子:select 'AA123' like 'AA%'; 结果:true 例子:select 'AAbbbbcccc' like '_A%'; 结果:true rl

  • 收集的ASP.NET中常用正则表达式

    "^\d+$" //非负整数(正整数 + 0)  "^[0-9]*[1-9][0-9]*$" //正整数  "^((-\d+)|(0+))$" //非正整数(负整数 + 0)  "^-[0-9]*[1-9][0-9]*$" //负整数  "^-?\d+$" //整数  "^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)  "^(([0-9]+\.[0-9]*[1

  • C#中常用的分页存储过程小结

    表中主键必须为标识列,[ID] int IDENTITY (1,1)//每次自增一 1.分页方案一:(利用Not In和SELECT TOP分页) 语句形式: 复制代码 代码如下: SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable ORDER BY id)) ORDER BY ID SELECT TOP 页大小 * FROM TestTable WHERE (ID NOT IN (SE

  • Javascript中常用的检测方法小结

    一.数组检测 1.使用ARRAY.ISARRAY() Array.isArray(obj) 例如: Array.isArray([]) //true Array.isArray({}) //false 兼容性: CHROME FIREFOX IE OPERA SAFARI 5 4.0(2.0) 9 10.5 5 可以使用以下方式,先检测是否支持Array.isArray. if(Array.isArray){ return Array.isArray(obj); } 2. 使用INSTANCEO

  • ORACLE中常用的几种正则表达式小结

    ORACLE正则表达式我基本用到的就一下几种,前四种最长用到 REGEXP_LIKE(source_char, pattern, match_parameter) REGEXP_SUBSTR(source_char, pattern, position, occurrence,match_parameter) REGEXP_INSTR(source_char, pattern, position, occurrence,match_parameter) REGEXP_REPLACE REGEXP

  • php中常用的正则表达式的介绍及应用实例代码

    更全面的实例,可以参考最常用的PHP正则表达式收集整理http://www.jb51.net/article/14049.htm php 正则表达式小结http://www.jb51.net/article/19831.htm PHP 正则表达式的几则使用技巧http://www.jb51.net/article/19832.htm 以下内容为php中常用的正则,正则是一门通用性的语法,可以在网上下载更全面的正则,提供学习! 作用:分割,匹配,查找,替换 1,php中两个常用的正则函数 preg

  • 数据库中使用正则表达式小结

    本篇文章通过两个示例给大家介绍数据库中使用正则表达式小结,在此不多说,具体内容请看下文详解吧. 示例一: CREATE FUNCTION dbo.RegExpTest ( @source varchar(), --需要匹配的源字符串 @regexp varchar(), --正则表达式 @ignorecase bit = --是否区分大小写,默认为false ) RETURNS bit --返回结果-false,-true AS BEGIN --(成功)或非零数字(失败),是由OLE 自动化对象

  • C#中常用的正则表达式实例

    目前为止,许多编程语言和工具都包含对正则表达式的支持,C#也不例外,C#基础类库中包含有一个命名空间(System.Text.RegularExpressions)和一系列可以充分发挥规则表达式威力的类(Regex.Match.Group等).那么,什么是正则表达式,怎么定义正则表达式呢? 正则表达式基础  什么是正则表达式 在编写字符串的处理程序时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码.     通常,我们

  • swift中的正则表达式小结

    作为一门先进的编程语言,Swift 可以说吸收了众多其他先进语言的优点,但是有一点却是让人略微失望的,就是 Swift 至今为止并没有在语言层面上支持正则表达式. 正则表达式的用处: 判断给定的字符串是否符合某一种规则(专门用于操作字符串) - 电话号码,电子邮箱,URL... - 可以直接百度别人写好的正则 - 别人真的写好了,而且测试过了,我们可以直接用 - 要写出没有漏洞正则判断,需要大量的测试,通常最终结果非常负责 过滤筛选字符串,网络爬虫 替换文字,QQ聊天,图文混排 语法规则 使用过

  • JS中常用的正则表达式

    以下收录一些我经常用到的正则表达式,因为工作场景中用到正则的地方几乎都跟validate插件的验证有关系,所以以下正则也是$.validator.addMethod() 的拓展: validate: http://jqueryvalidation.org/ 电话验证 /** * 手机 * */ $.validator.addMethod("isMobile", function (value, element) { var reg = /^((1[3-8][0-9])+\d{8})$/

随机推荐