正则匹配含有逗号的文章总数

在爬虫解析英文网站文章数量时,由于数字超过三位会加逗号,小于三位则没有。初始正则`d+,d+`无法处理所有情况。通过迭代,最终使用`(?!of) d+,?d* (?=results)`的正则表达式,成功匹配所有情况,包括一位数的文章,并避免了'of'和'results'的误匹配。" 131629104,7512833,零拷贝技术在Java后端的实践与优化,"['java', '后端']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,因为英文数字的表达方式,即超过三位数就会加个逗号。比如5,356。但是小于等于三位数时没有逗号,因此在写爬虫用正则解析文章数量时出现了这个问题,刚开始没有认真思考----现在记录一下。

1,第一次遇到的:

Showing 1–200 of 3,129 results

正则表达式为:\d+,\d+                                        (\d表示匹配数字,+表示匹配多个)

匹配结果:

这里推荐一个好用的在线正则表达式测试:http://tool.oschina.net/regex/       比较方便。

但是这里忽略了一个事实,当文章数小于1000的时候,匹配出现问题:

例子:

Showing 1–200 of 229 results

将会出现匹配错误。匹配不到。

2,这里我将正则表达式修改了为:\d+(,)?\d+       (?表示匹配前面的字符一个或0个)      

又出现了了错误:这里因为可以(,)?可以匹配一个或0个逗号的缘故导致200被匹配出来,,,

3.第三次,因为of字符是固定的,我在正则表达式中添加进去了:of \d+(,)?\d+

这时候匹配正确但增加了of,虽然可以处理字符达到要求但还是继续

4,第四次正则表达式:(?!of) \d+(,)?\d+      (?!大概的的意思是不匹配后面的字符串)这里加上后面的单词results更准确,

参考链接:https://blog.youkuaiyun.com/xuyangxinlei/article/details/81359366

     :https://www.cnblogs.com/snailpen/archive/2018/06/14/9184405.html

https://www.cnblogs.com/chip/p/4278135.html   正则表达式的先行断言(lookahead)和后行断言(lookbehind)

OK到此可以匹配出来了。

但是还是发现了一处BUG,不能匹配一位数的文章,

因此第五次更改:正则表达式:(?!of) \d+,?\d* (?=results)  

这次可以了,也去掉了of和results.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值