博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hive函数 -- regexp_extract
阅读量:7092 次
发布时间:2019-06-28

本文共 1158 字,大约阅读时间需要 3 分钟。

  hot3.png

函数描述:

regexp_extract(str, regexp[, idx]) - extracts a group that matches regexp

字符串正则表达式解析函数。

-- 这个函数有点类似于 substring(str from 'regexp')  ..

参数解释:

其中:

str是被解析的字符串

regexp 是正则表达式

idx是返回结果 取表达式的哪一部分  默认值为1。

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

1表示返回正则表达式中第一个() 对应的结果 以此类推 

注意点:

要注意的是idx的数字不能大于表达式中()的个数。

否则报错:

实例:

如:

select regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',0) from default.dual;

得到的结果为:

x=18abc

select regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',1) from default.dual;

得到的结果为:

18

select regexp_extract('x=a3&x=18abc&x=2&y=3&x=4','x=([0-9]+)([a-z]+)',2) from default.dual;

得到的结果为:

abc

我们当前的语句只有2个()表达式 所以当idx>=3的时候 就会报错

FAILED: SemanticException [Error 10014]: Line 1:7 Wrong arguments '2': org.apache.hadoop.hive.ql.metadata.HiveException: Unable to execute method public java.lang.String org.apache.hadoop.hive.ql.udf.UDFRegExpExtract.evaluate(java.lang.String,java.lang.String,java.lang.Integer)  on object of class org.apache.hadoop.hive.ql.udf.UDFRegExpExtract with arguments {x=a3&x=18abc&x=2&y=3&x=4:java.lang.String, x=([0-9]+)[a-z]:java.lang.String, 2:java.lang.Integer} of size 3

转载于:https://my.oschina.net/data99/blog/837586

你可能感兴趣的文章
设计模式学习笔记--状态模式
查看>>
(摘) Web架构师应学些什么具备哪些能力
查看>>
[LeetCode]题解(python):124-Binary Tree Maximum Path Sum
查看>>
Java异常面试题
查看>>
JDBC对Mysql utf8mb4字符集的处理
查看>>
使用express-generator初始化你的项目目录
查看>>
使用JavaScript脚本控制媒体播放(顺序播放和随机播放)
查看>>
01背包
查看>>
poj1363 Rails
查看>>
ELK-Python(二)
查看>>
我的FP感悟
查看>>
linux 系统操作
查看>>
WebView使用总结(应用函数与JS函数互相调用)
查看>>
WuKong
查看>>
Quick Sort(Java)
查看>>
1029. 旧键盘(20)
查看>>
Poj 2559 最大矩形面积 v单调栈 分类: Brush Mode ...
查看>>
Javascript做图片无缝平滑滚动
查看>>
spring mvc深入学习
查看>>
jquery中的跨域-jsonp格式
查看>>