如何使用正则表达式python3在特定字符串后查找带逗号的数字?
import re
word = re.search(r'sum RM (\d+) \d+(?:,\d+)?', 'sum RM 320,000.00')
print(word)
Expected:
RM 320,000.00
答案 0 :(得分:1)
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
答案 1 :(得分:1)
如果您不仅要匹配其中带有,
的数字,而且如果这些数字必须符合在每3位数字后面加一个逗号的标准以进行读取,则请使用正则表达式:
r'sum (RM [0-9]{1,3}(:?,[0-9]{3})+(:?\.[0-9]+)?)'
说明:
[0-9]{1,3}
范围[0-9]
中的1至3位数字,如果您使用\d
,您还将接受Unicode数字,例如:1 1 2 2 3 3 (:?,[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
答案 2 :(得分:0)
尝试一下:
import re
word = re.findall(r'sum (RM [0-9,.]*)', 'sum RM 320,000.00')
print(word)