正则表达式:提取数字和⼩数点
正则表达式
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是⾮负整数,其中n<=m。匹配⾄少n次,⾄多m次。
e.g:"o{1,3}"匹配"fooooooood"中的头三个o
"o{0,1}“等效于"o?”
当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后,
匹配模式是“⾮贪⼼匹配”。“⾮贪⼼匹配”:匹配搜索到的尽可能短的字符串,
⽽默认的“贪⼼匹配”则是匹配搜索到尽可能长的字符串。
e.g:"oooo"中,"o+?“只能够匹配出单个"o”;⽽"o+“匹配出所有的"o”
.匹配除"\r\n"之外的任何单个字符
[xyz]字符集。匹配包含的任⼀字符。e.g:"[abc]“匹配"plain"中的"a”
[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]:这时候:'.' 不再是匹配除"\r\n"之外的任何单个字符
select regexp_match('会议事业部69%57%/','[\d.\d]{1,}')"{69}"
4、参考Demo
-- PostgreSQL正则表达使⽤
blog.csdn/qq_22994783/article/details/82699559
-- Hive常⽤正则表达式
t/developer/article/1538552

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。