如何用python写一个正则表达式,匹配每3位就有一个逗号的数字(千分号)?

这是《python编程快速上手--让繁琐工作自动化》(Al Sweigart著 王海鹏翻译。中国工信出版社 人民邮电出版社)里第7章模式匹配与正则表达式7.17习题,第20题的课后题

多亏了csdn博主的文章,谢谢

https://blog.csdn.net/daaa2019/article/details/102963975

下面的代码是上面代码的简版,运行成功

import re
text="""
    12
    12,333
    13,444,555
    14,66,777
    1567
    """    

threeNumRegex=re.compile(r"(?<![\d|\,])(?:\d{1,3})(?:,\d{3})*(?=\s)")
result=threeNumRegex.findall(text)
print(result)

运行结果:['12','12,333','13,444,555']

遗憾的是,还有俩问题没解决

1、为啥要加  (?<![\d|\,])  否定负向零宽断言

2、为啥要加  (?=\s) 肯定正向零宽断言

import re
text="""
	12
	12,333
	13,444,555
	14,66,777
	1567
	"""	
# 这个是来自c
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值