教你用正则表达式提取数字和小数点

 更新时间:2022年09月29日 10:44:04   作者:灿彬垂死挣扎ing  
最近开发遇到一个新的东西,需要将里面的数字提取出来,下面这篇文章主要给大家介绍了关于用正则表达式提取数字和小数点的相关资料,需要的朋友可以参考下

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"中"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正则表达使用
https://blog.csdn.net/qq_22994783/article/details/82699559
-- Hive常用正则表达式
https://cloud.tencent.com/developer/article/1538552

总结

到此这篇关于用正则表达式提取数字和小数点的文章就介绍到这了,更多相关表达式提取数字小数点内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何使用JavaScript和正则表达式进行数据验证

    如何使用JavaScript和正则表达式进行数据验证

    利用客户端JavaScript的优势,JavaScript中的正则表达式可以简化数据验证的工作,下面与大家分享下如何使用JavaScript和正则表达式进行数据验证,感兴趣的朋友可以参考下哈
    2013-05-05
  • 2019年前端必用js正则(小结)

    2019年前端必用js正则(小结)

    这篇文章主要介绍了2019年前端必用js正则,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • PHP正则表达式完全教程之基础篇

    PHP正则表达式完全教程之基础篇

    正则表达式是烦琐的,但是强大的,学会之后会让你除了提高效率外,会给你带来绝对的成就感.正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
    2015-09-09
  • 正则表达式之文本模式的匹配和查找

    正则表达式之文本模式的匹配和查找

    这篇文章主要介绍了正则表达式之文本模式的匹配和查找操作方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • JavaScript正则表达式校验非负整数实例

    JavaScript正则表达式校验非负整数实例

    本文分享了JavaScript正则表达式(^\d+$ 或 ^[1-9]\d*|0$)校验非负整数实例代码,代码简单易懂,需要的朋友可以看下
    2016-12-12
  • scala中正则表达式的使用详解

    scala中正则表达式的使用详解

    在 Scala 中,正则表达式是用于处理文本模式匹配的强大工具,它通过java.util.regex.Pattern和java.util.regex.Matcher这两个 Java 类来实现,本文给大家介绍scala中正则表达式的使用,感兴趣的朋友一起看看吧
    2024-12-12
  • JS中正则表达式全局匹配正斜杠的方法

    JS中正则表达式全局匹配正斜杠的方法

    这篇文章主要介绍了JS中正则表达式全局匹配正斜杠的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 正则表达式 表示 非指定字符串开头的正则

    正则表达式 表示 非指定字符串开头的正则

    非指定字符串开头的正则,很多情况下需要用的到,需要的朋友可以参考下。
    2011-01-01
  • JS基础教程——正则表达式示例(推荐)

    JS基础教程——正则表达式示例(推荐)

    本文给大家分享js基础之正则表达式知识,以及在正则表达式中() [] {}所代表的意思,本文给大家介绍的非常详细,需要的朋友参考下
    2017-01-01
  • 看到一个JS正则的题

    看到一个JS正则的题

    看到一个JS正则的题...
    2007-01-01

最新评论