3 回答

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

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

TA贡献1921条经验 获得超9个赞
试试这个:
import re
word = re.findall(r'sum (RM [0-9,.]*)', 'sum RM 320,000.00')
print(word)
添加回答
举报