Hive正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive正则表达式相关的知识,希望对你有一定的参考价值。

参考技术A

参考 维基百科 、 Hadoop Hive概念学习系列之hive的正则表达式初步(六) 和 Hive 正则匹配函数

之前没有在意过正则表达式,但是工作组不可避免的遇到了,感觉也比较重要,就花点时间理解一下。

正则表达式的目的:对字符串str进行解析,用正则表达式(pattern)进行匹配,并 得到我们想要的符合模板pattern的字符串

一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列匹配某个句法规则的字符串。例如:Handel、Händel和Haendel这三个字符串,都可以由H(a|ä|ae)ndel这个模式来描述。

同一个正则表达式可以匹配多个字符串。
例如,goo+gle可以匹配google、gooogle、goooogle等
0*42可以匹配42、042、0042、00042等。

反过来说,对于google、gooogle、goooogle我们都可以用正则表达式“goo+gle”匹配得到。而google、gooogle、goooogle就算我们想要的符合模板pattern的字符串。

举两个经常用到的:regexp_extract 与 regexp_replace

regexp_extract(str, regexp[, idx]) 字符串正则表达式解析函数。

extracts a group that matches regexp

参数解释:

其中还有几个符号与idx需要注意的地方。
小括号( )标记一个子表达式的开始与结束的位置
**1表示返回正则表达式中第一个() 对应的结果 **。
2表示返回正则表达式中第二个() 对应的结果

0表示把整个正则表达式对应的结果全部返回

举例:

返回第一个()对应的结果。

此时,第一个()中对应结果是love,所以返回“love”。

因为idx是0,所以返回整个正则表达式匹配的结果。

语法: regexp_replace(string A, string B, string C)
返回值: string
说明: 将字符串A中的符合Java正则表达式B的部分替换为C

注意,在有些情况下要使用转义字符,类似 Oracle 中的regexp_replace函数。

举例说明:

以上是关于Hive正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

HIVE常用正则表达式

hive 正则匹配符号都要转义吗

hive正则表达式

HIVE之正则化详解

Hive 正则表达式

Hive正则表达式