Если вы хотите не только сопоставлять числа с ,
в нем, но и если эти числа должны соответствовать стандарту добавления запятой после каждых 3 цифр для целей чтения, используйте регулярное выражение:
r'sum (RM [0-9]{1,3}(:?,[0-9]{3})+(:?\.[0-9]+)?)'
Пояснения:
[0-9]{1,3}
от 1 до 3 цифр в диапазоне [0-9]
, если вы используете \d
, вы также будете принимать цифры Unicode, такие как: 112233 (:?,[0-9]{3})+
запятая, за которой следует некоторая группа из 3 цифр ascii, повторяемых от 1 до N раз, причем N является целым числом> 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