赞
踩
hive的正则表达式是很强大的。无论是数据开发还是数据仓库在工作中都离不开正则表达式,通过正则表达式可以对复杂的字符串进行过滤、截取、替换。为此特意做了个hive正则表达式的小结。
字符 | 说明 | 等于 |
\ | 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。e.g:“n"匹配字符"n”。"\n"匹配换行符。序列"\\“匹配”","\(“匹配”(" | |
^ | 匹配输入字符串开始的位置 | |
$ | 匹配输入字符串结束的位置 | |
* | 零次或多次匹配前面的字符或子表达式 | {0,} |
+ | 一次或多次匹配前面的字符或子表达式 | {1,} |
? | 零次或一次匹配前面的字符或子表达式 | {0,1} |
{n} | n是非负整数。正好匹配n次。e.g:"o{2}"与"job"中的"o"不匹配,但与"food"中的两个"o"匹配 | |
{n,} | n是非负整数。至少匹配n次。e.g:"o{2,}“不匹配"job"中的"o”,而匹配"fooooood"中的所有o ,o{1,}“等效于o+” | |
{n,m} | m和n是非负整数,其中n<=m。匹配至少n次,至多m次。 | |
. | 匹配除"\r\n"之外的任何单个字符 | |
[xyz] | 字符集。匹配包含的任一字符。e.g:"[abc]“匹配"plain"中的"a” | |
[^xyz] | 反向字符集。匹配未包含的任何字符。 | |
[a-z] | 字符范围。匹配指定范围内的任何字符。e.g:"[^abc]“匹配"plain"中"p”,“l”,“i”,“n” | |
[^a-z] | 反向范围字符。匹配不在指定范围内的任何字符。e.g:"[^a-z]"匹配任何不在"a"到"z"范围内的任何字符 | |
\d | 数字字符匹配。 | |
\D | 非数字字符匹配。 | |
\s | 匹配任何空白字符,包括空格、制表符、换页符等 | [0-9] |
\S | 匹配任何非空白字符 | [^0-9] |
\w | 匹配任何类字符,包括下划线 | |
\W | 与任何非单词字符匹配 |
ge:conent_info
fgds |
fd |
dffd |
1.regexp
语法: XXXX REGEXP 表达式
操作类型: STRING
说明: 功能与RLIKE相同用于过滤字符串
- eg:获取含数字的字符串
- hive> select id
- from
- (
- select 'abc01' id
- union all
- select 'abc'
- union all
- select '1abc'
- union all
- select 'a0bc'
- ) a
- where id regexp '\\d'
-
- abc01
- 1abc
- a0bc
语法: regexp_extract(XXXX, 表达式, 索引位置)
返回值: string
说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。
select regexp_extract(cc, '33', 3) from concent_info
3.regexp_replace
语法: regexp_replace(string A, string B, string C)
返回值: string
说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在有些情况下要使用转义字符,类似oracle中的regexp_replace函数。
select regexp_replace(cc, '5564', 'cyx') from concent_info
参考链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。