表示数字的正则表达式【兼小括号在正则表达式的作用】

作者: admin 分类: 运营、维护日志 发布时间: 2023-08-08 13:16

今天有个小需求,需要匹配数字,数字全部是正数,但有可能有一到两位的小数点,数字夹杂在文字当中,比如下面这段:

中国移动?,织治中国广电HD米4211:25X我的成绩单长沙湘隴医药学校35年名校长沙星级校园医药人才摇篮学医药当然湘麓学费最高减免16800元了解更多>>?18153335108a欢迎您使用A佳查分,祝学习进步,心想事成!益阳市2023年中考成绩查询结果姓名:曾小睡考号:92400803300语文67数学英语26物理22化学23历史55道德与法治58生物4地理26体育34优惠加分0综合素质评价2B3C艺术合格实验操作合格总分355查询时间:2023-07-0213:25:34学护理到湖南护理学校护理中医护理药剂中药中医康复眼视光与配镜口腔修复工艺技能+学历双重保障点击获取招生简章日澜南护理字

我用自动识别程序能识别出来图片上的文字如图,我的目的是要把成绩查询出来的姓名和对应的各科成绩取出来,然后自动填到EXCEL表格中,忽略其它次要因素,关键就是怎么识别出来数字,通过查询,得到一个页面获得启发:https://blog.csdn.net/BrianWey/article/details/82716186

然而用页面上的方法测试,并没有成功,通过测试,只要以下代码是可以取到数字的:

\d+(\.\d{1,2})?

其中\d代表数字,后面的+代表可以有多个,类似的\d{1,2}就是代表有一个或者两个数字,代表\.用了转义字符,代表小数点。问号代表非贪婪匹配,关键就是中间的小括号了,经过测试,这个小括号的作用是用正则表达式匹配内容时,括号里面的内容是可选的,即括号里面的内容有或者没有都匹配到,如下面一段文本:

本站介绍的很多套餐都没有出示办理方法,其实方法很简单,你把上面介绍的几个名称拿到拼多多、淘宝等地方搜索一下,或者向代理商问一下h,就有渠道上车了。另外加群也能获得不少最新信息和上车方式。

我要匹配到“一下”和“一下,”,那么正则表达式写法为:

一下(,)?

匹配结果:

匹配结果

这么理解似乎也不对,因为如果没有后面的“?”号,那么肯定匹配不到“一下”,因为问号在正则表达式中表示问号左边的(即前面的)内容出现0次或者1次都可以,代表非贪婪匹配。所以这里括号的作用到底是什么呢?我个人认为就是一种限定,问号接在括号后面,就是代表括号里面的内容出现0次或者一次。0次就是没有出现括号里面的内容。

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Powered by 草根站长笔记 © 2015-2020 草根站长笔记 Inc.版权所有,禁止转载