3 回答

TA貢獻1772條經(jīng)驗 獲得超6個贊
如果您不僅要匹配其中的數(shù)字,,
而且如果這些數(shù)字必須遵守在每 3 位數(shù)字后添加逗號以供閱讀的標準,請使用正則表達式:
r'sum (RM [0-9]{1,3}(:?,[0-9]{3})+(:?\.[0-9]+)?)'
說明:
[0-9]{1,3}
[0-9]
如果您使用范圍內的 1 到 3 位數(shù)字,\d
您還將接受 unicode 數(shù)字,例如:112233(:?,[0-9]{3})+
逗號后跟一組 3 個 ascii 數(shù)字,重復 1 到 N 次,其中 N 是 int > 1(:?\.[0-9]+)?
最終一些小數(shù)部分
代碼:
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條經(jīng)驗 獲得超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條經(jīng)驗 獲得超9個贊
試試這個:
import re
word = re.findall(r'sum (RM [0-9,.]*)', 'sum RM 320,000.00')
print(word)
添加回答
舉報