所有分类
  • 所有分类
  • 游戏源码
  • 网站源码
  • 单机游戏
  • 游戏素材
  • 搭建教程
  • 精品工具

不会用正则表达式提取数字和小数点?手把手教你超简单

不会用正则表达式提取数字和小数点?手把手教你超简单 一

文章目录CloseOpen

别慌!这篇文章就是给正则新手写的“入门指南”——不用记复杂语法,手把手拆透提取数字和小数点的核心逻辑:哪些符号对应数字?小数点要怎么处理才不会“误伤”?混合文本里的数字怎么精准“揪”出来?从基础规则到实战案例(比如提取电商价格、表格数据),每一步都讲得明明白白,跟着做5分钟就能上手。不管你是做数据整理、爬虫采集还是日常办公,学会这招能省超多时间——赶紧跟着解锁正则的“简单用法”,再也不用为提取数字发愁啦!

你是不是也遇到过这种事儿?想从一堆文本里抠数字和小数点——比如电商商品标题里的“199.9元”、报表里的“123.45kg”、短信账单里的“56.78元”,手动复制吧,几百条数据能累得手酸;用公式吧,要么漏要么错,最后还是得返工。我之前也怕正则表达式,觉得那些“d”“.”的符号像“天书”,直到去年帮做电商的朋友处理了1000条商品数据,才发现:正则其实是“纸老虎”,把底层逻辑摸透,5分钟就能上手。

先搞懂正则里的“数字和小数点”密码

其实正则里的“数字和小数点”,就像给数字贴了“专属标签”——你只要认识3个核心符号,就能解锁80%的提取需求:

第一个是d:它是数字的“身份证”,不管是0-9里的哪个数字,它都能“认出来”。比如文本里的“1”“2”“3”,只要用d,就能精准匹配。我第一次用的时候,帮朋友提商品标题里的“库存数”,比如“库存仅剩50件”,直接用d+(“+”代表“至少一个数字”),一下就把“50”抠出来了,比手动找快10倍。

第二个是.:注意!这里的小数点得加个反斜杠“”,不然正则会把“.”当成“任意字符”(比如“a”“b”都能匹配)。我之前犯过这个错——帮朋友提“123.45元”,直接写了d+.d+,结果匹配了“123a45”这种乱七八糟的内容,后来查了MDN Web Docs( Mozilla 官方的技术文档,靠谱得很)才知道:正则里的“.”是特殊符号,要匹配真正的小数点,得用“.”转义(链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressionsnofollow)。

第三个是括号和问号:用来解决“可选情况”。比如有些数字带小数点(123.45),有些不带(123),这时候得把“小数点+数字”变成“可选”——用(.d+)?。括号里的内容代表“可以有也可以没有”,问号就是“可选”的意思。我去年帮财务朋友提报表数据,里面既有“123”也有“123.45”,用d+(.d+)?,一下就把所有数字都提出来了,朋友说比她之前用VLOOKUP快了半小时。

再举个直观的例子:如果要提取“商品标题里的价格”,比如“新品上衣 99元 限时折扣”“促销价 123.45元 库存有限”,用d+(.d+)?就能同时覆盖“99”和“123.45”——是不是很省心?

手把手教你做:从0到1提取数字和小数点

光懂符号没用,得动手练。我把去年帮朋友处理电商数据的“笨办法”搬出来,你跟着做,保证能会:

第一步:先明确“你要提什么样的数字”

别上来就写正则,先想清楚需求:是只要“带小数点的数字”(比如123.45)?还是“所有数字”(包括123和123.45)?还是“负数”(比如-123.45)?

我之前帮做新媒体的朋友提文章阅读量,他要的是“整数”(比如“12345次阅读”),那直接用d+就行;后来帮财务朋友提报表里的“正负金额”(比如“-56.78元”“100元”),就得加个“-?”(代表“可选的负号”),写成-?d+(.d+)?——这一步想清楚,后面少走弯路。

第二步:写正则,用“试错法”调整

正则不用“一次写对”,先写个基础版,再根据结果调。比如你要提“带小数点的数字”,先写d+.d+(“+”代表“至少一个”,所以d+是“至少一个数字”,.d+是“小数点+至少一个数字”)。拿“促销价 123.45元 库存50件”试试,这个正则能提“123.45”,但提不到“50”——这时候如果要同时提“50”,就得把正则改成d+(.d+)?(括号里的是“可选的小数点+数字”),这样“123.45”和“50”都能提出来了。

我去年帮朋友提商品价格时,一开始用了d+.d+,结果漏了“99元”这种没小数点的数字,后来加了(.d+)?,才把所有价格都覆盖到——你看,试一次就知道哪里错了。

第三步:用工具“验证”,避免踩坑

正则有个“神器”叫 regex101(链接:https://regex101.com/nofollow),把你的文本贴进去,再贴正则,就能实时看到匹配结果。比如你要提“短信账单里的金额”:“您本月消费56.78元,账户余额123元”,用d+(.d+)?,就能匹配“56.78”和“123”——要是匹配错了,工具会标红,你直接改正则就行。

我之前帮财务朋友提负数时,写了-?d+(.d+)?,用regex101测了一下“-123.45元 收入456元”,结果匹配了“-123.45”和“456”,完全正确——这个工具能帮你省超多“试错时间”。

最后给你留个“实战作业”

找个你身边的文本——比如手机里的“外卖订单”(比如“餐费23.5元 配送费5元”),或者“购物小票”(比如“牛奶12.8元 面包5.5元 合计18.3元”),用我教的d+(.d+)?试试,看能不能把所有数字都提出来。要是遇到问题,比如“文本里的小数点是中文的‘。’”(比如“123。45”),你就把正则里的.换成。,写成d+。d+——保证能解决。

正则真的不是“程序员的专利”,它是帮我们“偷懒”的工具。我之前也怕得要命,现在帮朋友处理数据,5分钟就能搞定别人1小时的活儿——你试试就知道,其实超简单!

要是你试的时候遇到卡壳的地方,欢迎留言告诉我你的需求,我帮你看看正则怎么写~


正则里提取数字和小数点,最核心的几个符号是什么?

其实就3个核心符号,记下来能解决80%的问题。第一个是d,相当于数字的“身份证”,0-9的数字都能认出来,比如“库存50件”里的“50”用d+就能提出来;第二个是.,注意得加反斜杠,不然正则会把“.”当成任意字符(比如“a”“b”都能匹配),我之前帮朋友提“123.45元”时没加反斜杠,结果匹配了乱七八糟的内容;第三个是括号加问号(.d+)?,用来处理“可选情况”,比如有些数字带小数点(123.45)、有些不带(123),加了这个就能同时覆盖两种情况,去年帮财务朋友提报表数据时亲测有效。

想同时提取带小数点和不带小数点的数字,正则该怎么写?

直接用d+(.d+)?就行。前面的d+代表“至少一个数字”,括号里的(.d+)?是“可选的小数点+数字”,比如“促销价123.45元 库存50件”,用这个正则能同时把“123.45”和“50”都提出来。我之前帮电商朋友处理商品价格时,一开始只用了d+.d+,结果漏了“99元”这种没小数点的数字,后来加了(.d+)?才解决问题,其实就是个“试错法”,先写基础版再调整。

正则里的小数点为什么要加反斜杠啊?

因为正则里的“.”是个特殊符号,默认代表“任意字符”(比如“a”“b”甚至空格都能匹配),不是真正的小数点。我第一次帮朋友提“123.45元”时没加反斜杠,结果匹配了“123a45”这种乱七八糟的内容,后来查了MDN Web Docs(Mozilla官方的技术文档,很靠谱)才知道,要匹配真正的小数点得用“.”转义,之后再提数字就没踩过这个坑了。

怎么验证正则能不能正确提取数字?

推荐用regex101这个工具(链接:https://regex101.com/nofollow),操作超简单——把你要处理的文本(比如外卖订单“餐费23.5元 配送费5元”)贴进去,再贴写好的正则(比如d+(.d+)?),就能实时看到匹配结果。我之前帮财务朋友提负数数据时,写了-?d+(.d+)?,用这个工具测“-123.45元 收入456元”,结果完全匹配,省了超多试错时间。

遇到中文小数点“。”,正则该怎么调整?

其实很简单,把正则里的.换成中文的“。”就行。比如文本里是“123。45元”,你要提取这个数字的话,直接把正则写成d+。d+(带中文小数点);如果要覆盖“带或不带小数点”的情况,就写成d+(。d+)?,我之前帮朋友处理过中文小数点的购物小票数据,这么改之后就能精准提取所有数字了。

原文链接:https://www.mayiym.com/51429.html,转载请注明出处。
0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码