Hive中 正则表达式替换函数 regexp_replace和正则表达式解析函数 regexp_extract的用法总结
Hive中有很多字符串相关的函数,其中有两个与正则表达式相关的比较特殊,近期使用的时候做了较多的测试,做个笔记,鼓励一下自己,每天进步一点点。
正则表达式替换函数 regexp_replace
正则替换是常用的字符串替换函数
- 语法:regexp_replace(string subject, string pattern, string str)
- 参数说明:subject为被替换的字符串,pattern为正则表达式,str为替换正则表达式(匹配到的字符串)的字符串
- 描述:将字符串subject中,符合正则表达式pattern的字符串,替换为字符串str,然后将替换后的整个字符串返回
- 测试:
#执行语句1
hive> select regexp_replace('abcdefg','abc','ABA') as res;
#执行结果1
res
ABAdefg
Time taken: 0.041 seconds, Fetched: 1 row(s)
#执行语句2
hive> select regexp_replace('abcdefg','[^aceg]','x') as res;
#执行结果2
res
axcxexg
Time taken: 0.028 seconds, Fetched: 1 row(s)
正则表达式解析函数 regexp_extract
先了解正则中捕获分组的概念,其实就是一个括号内的内容,如 “(\d)\d” 而"(\d)" 这就是一个捕获分组
- 语法:regexp_extract(string subject, string pattern, int index)
- 参数说明:subject为被解析的字符串,pattern为正则表达式,index为正则表达式中捕获分组的序号,取值范围是0~n(n为捕获分组个数)。
其中,index取值为 0:返回pattern匹配到的整个结果;
index取值为1:返回pattern中第1个捕获分组匹配到的结果;
…
index取值为n:返回pattern中第n个捕获分组匹配到的结果;
index取值小于0或者大于n:报错。 - 描述:将字符串subject,按照pattern正则表达式的规则拆分,返回index指定的字符。
- 测试:
#执行语句1
hive> select regexp_extract('abcdefg'