为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用正则表达式在python中的特定字符串后查找带逗号的数字?

如何使用正则表达式在python中的特定字符串后查找带逗号的数字?

达令说 2021-12-17 15:52:11
如何使用正则表达式python3在某些字符串后查找带逗号的数字?import reword = re.search(r'sum RM (\d+) \d+(?:,\d+)?', 'sum RM 320,000.00')print(word) Expected: RM 320,000.00
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

如果您不仅要匹配其中的数字,,而且如果这些数字必须遵守在每 3 位数字后添加逗号以供阅读的标准,请使用正则表达式:

r'sum (RM [0-9]{1,3}(:?,[0-9]{3})+(:?\.[0-9]+)?)'

说明:

  • [0-9]{1,3}[0-9]如果您使用范围内的 1 到 3 位数字,\d您还将接受 unicode 数字,例如:112233

  • (:?,[0-9]{3})+ 逗号后跟一组 3 个 ascii 数字,重复 1 到 N 次,其中 N 是 int > 1

  • (:?\.[0-9]+)? 最终一些小数部分

代码:

import re


#to match only numbers with comma every 3 digits

regex = r'sum (RM [0-9]{1,3}(:?,[0-9]{3})+(:?\.[0-9]+)?)'


print(re.search(regex, 'sum RM 320,000.00').group(1) if re.search(regex, 'sum RM 320,000.00') else None)

print(re.search(regex, 'sum RM ,,,').group(1) if re.search(regex, 'sum RM ,,,') else None)

print(re.search(regex, 'sum RM 3,00').group(1) if re.search(regex, 'sum RM 3,00') else None)

print(re.search(regex, 'sum RM 3123,000').group(1) if re.search(regex, 'sum RM 3123,000') else None)

print(re.search(regex, 'sum RM 31,000').group(1) if re.search(regex, 'sum RM 31,000') else None)

print(re.search(regex, 'sum RM 312,000').group(1) if re.search(regex, 'sum RM 312,000') else None)

print(re.search(regex, 'sum RM 312,00').group(1) if re.search(regex, 'sum RM 312,00') else None)

输出:


RM 320,000.00

None

None

None

RM 31,000

RM 312,000

None


查看完整回答
反对 回复 2021-12-17
?
跃然一笑

TA贡献1826条经验 获得超6个赞

re.search 返回您需要捕获的匹配组:


import re


word = re.search(r'sum (RM \d+(?:,\d+)(?:.\d+)?)', 'sum RM 320,000.00')

print(word.group(1))


# RM 320,000.00


查看完整回答
反对 回复 2021-12-17
?
郎朗坤

TA贡献1921条经验 获得超9个赞

试试这个:


import re

word = re.findall(r'sum (RM [0-9,.]*)', 'sum RM 320,000.00')

print(word)


查看完整回答
反对 回复 2021-12-17
  • 3 回答
  • 0 关注
  • 428 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号