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

如何使用正则表达式python3在某些字符串后查找带逗号的数字?


import re

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

print(word)



 Expected:

 RM 320,000.00


达令说
浏览 429回答 3
3回答

梦里花落0921

如果您不仅要匹配其中的数字,,而且如果这些数字必须遵守在每 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 digitsregex = 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.00NoneNoneNoneRM 31,000RM 312,000None

跃然一笑

re.search 返回您需要捕获的匹配组:import reword = re.search(r'sum (RM \d+(?:,\d+)(?:.\d+)?)', 'sum RM 320,000.00')print(word.group(1))# RM 320,000.00

郎朗坤

试试这个:import reword = re.findall(r'sum (RM [0-9,.]*)', 'sum RM 320,000.00')print(word)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python