1、初识
1.1、纯数字提取
-- "提取123abc提取":提取当前字符当中的123 -- 1.Hive: select regexp_replace('提取123abc提取','[^0-9]+','') "123" select regexp_replace('提取123abc提取','D','') "提取123abc提取" -- 2.PG: 'g':global,全局替换 select regexp_replace('提取123abc提取','[^0-9]+','','g' ) "123" select regexp_replace('提取123abc提取','D','','g' ) "123"
1.2、带有小数点数字提取
-- "提取123.11abc提取":提取当前字符当中的123.11 -- 1.Hive:小数或者整数数据提取 select regexp_extract('提取123.11abc提取','[0-9]+([.]{1}[0-9]+){0,1}',0) "123.11" select regexp_extract('提取123abc提取','[0-9]+([.]{1}[0-9]+){0,1}',0) "123" -- 2.PG: select regexp_replace('提取123.11abc提取','[^d.d]','','g') "123.11"
2、语法
字符 | 说明 | 等效于 |
---|---|---|
将下一字符标记为特殊字符、文本、反向引用或八进制转义符。 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+” “o{0,}“等效于”o*” |
{n,m} | m和n是非负整数,其中ne.g:”o{1,3}”匹配”fooooooood”中的头三个o | “o{0,1}“等效于”o?” |
? | 当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后, 匹配模式是“非贪心匹配”。“非贪心匹配”:匹配搜索到的尽可能短的字符串, 而默认的“贪心匹配”则是匹配搜索到尽可能长的字符串。 e.g:”oooo”中,”o+?“只能够匹配出单个”o”;而”o+“匹配出所有的”o” |
|
. | 匹配除”rn”之外的任何单个字符 | |
[xyz] | 字符集。匹配包含的任一字符。 e.g:”[abc]“匹配”plain”中的”a” |
|
[^xyz] | 反向字符集。匹配未包含的任何字符。 e.g:”[^abc]“匹配”plain”中”p”,“l”,“i”,“n” |
|
[a-z] | 字符范围。匹配指定范围内的任何字符。 e.g:”[a-z]”匹配”a”到”z”范围内的任何小写字母 |
|
[^a-z] | 反向范围字符。匹配不在指定范围内的任何字符。 e.g:”[^a-z]”匹配任何不在”a”到”z”范围内的任何字符 |
|
d | 数字字符匹配。 | [0-9] |
D | 非数字字符匹配。 | [^0-9] |
s | 匹配任何空白字符,包括空格、制表符、换页符等 | |
S | 匹配任何非空白字符 | |
w | 匹配任何类字符,包括下划线 | [A-Za-z0-9_] |
W | 与任何非单词字符匹配 | [^A-Za-z0-9_] |
3、实例代码
-- PG:regexp_match:匹配函数 select regexp_match('会议事业部69.57%/','[d.d]{1,}') "{69.57}" select regexp_match('会议事业部69%57%/','[d%d]{1,}') "{69%57%}" -- 子表达式中:[d.d]:这时候:'.' 不再是匹配除"rn"之外的任何单个字符 select regexp_match('会议事业部69%57%/','[d.d]{1,}') "{69}"
4、参考Demo
— PostgreSQL正则表达使用
https://blog.csdn.net/qq_22994783/article/details/82699559
— Hive常用正则表达式
https://cloud.tencent.com/developer/article/1538552
总结
到此这篇关于用正则表达式提取数字和小数点的文章就介绍到这了,更多相关表达式提取数字小数点内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!