鱼C论坛

 找回密码
 立即注册
查看: 1010|回复: 7

如何写一个正则表达式,匹配每3位数1个逗号的数字

[复制链接]
发表于 2020-9-21 10:45:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 duke0522 于 2020-9-21 10:51 编辑

如果只是匹配‘42’,‘4,123’而不匹配‘12,34,567’,‘1234’。正则表达式为(r'^\d{1,3}(,\d{3})*$'),可以很好的匹配。
但是,如果从一篇很长的文章中提取这样的数字呢?比如'42sdf1,234ds6,368,745ds12,34,567sdfs1234'这样的字符串中,匹配正确的数字,我还没有想出很好的办法。
目前的思路是,将'42sdf1,234ds6,368,745ds12,34,567sdfs1234'中所有的含有逗号的数字字符串全部提取出来,形成一个列表,然后对列表中的项采用正则表达式(r'^\d{1,3}(,\d{3})*$')进行匹配。
如何提取'42sdf1,234ds6,368,745ds12,34,567sdfs1234'中所有含有逗号的数字字符串,哪位大神可以指导一下?
或者有更好的解决办法?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 10:53:50 | 显示全部楼层
  1. re.findall(r'\d+,[\d,]+','42sdf1,234ds6,368,745ds12,34,567sdfs1234')
复制代码

是要这个结果吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-9-21 14:38:40 | 显示全部楼层

不理想,其中的‘42’和‘1234’没有匹配
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 14:55:49 | 显示全部楼层

我好像找到了一个方法,在你的基础上改进一下,
  1. re.findall(r'\d+,[\d,]+|\d+','42sdf1,234ds6,368,745ds12,34,567sdfs1234')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-21 15:44:45 | 显示全部楼层


写了一个,你看如何
  1. import re

  2. text = '42sdf1,234ds6,368,745ds12,34,567sdfs1234'
  3. matches = []

  4. findNumRegex = re.compile(r'\d+,[\d,]+|\d+')
  5. numberList = findNumRegex.findall(text)

  6. numRegex = re.compile(r'^\d{1,3}(,\d{3})*)
  7. for number in numberList:
  8.     mo = numRegex.search(str(number))
  9.     try:
  10.         matches.append(mo.group())
  11.     except:
  12.         pass
  13. print(matches)   
复制代码

除此之外,我还有一个问题,r'\d+,[\d,]+'中中括号是什么含义?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 17:43:05 | 显示全部楼层
duke0522 发表于 2020-9-21 15:44
写了一个,你看如何

除此之外,我还有一个问题,r'\d+,[\d,]+'中中括号是什么含义?

  1. re.findall(r'[\d,]+','42sdf1,234ds6,368,745ds12,34,567sdfs1234')
复制代码



这样就行了,中括号里含义是数字或者逗号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 14:43:10 | 显示全部楼层
挥舞乾坤 发表于 2020-9-21 17:43
这样就行了,中括号里含义是数字或者逗号

想把你的答案设置为最佳答案,不知道怎么弄了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-22 17:29:50 | 显示全部楼层
duke0522 发表于 2020-9-22 14:43
想把你的答案设置为最佳答案,不知道怎么弄了

因为你发的不是提问贴,应该设置不了最佳吧,下次发提问帖就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 00:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表