Gmail交易邮件金额提取问题求助:正则匹配失败
提取Gmail转账邮件中的$X.XXX格式金额
你的正则表达式存在两个关键错误,导致无法正确匹配金额:
$是正则的结束锚点,不是字面美元符号,必须转义为\$才能匹配邮件里的$字符;.是正则的通配符(匹配任意字符),要匹配实际的小数点,需要转义为\.。
修正后的正则应该是r'\$\d{1}\.\d{3}',用来匹配$X.XXX格式的金额。提取到结果后可以进一步处理,去掉开头的$符号,再按你需要的格式输出。
以下是修改后的完整代码片段:
import re # Messages Filter message_count = 50 for message in messages[:message_count]: msg = service.users().messages().get(userId='me', id=message['id']).execute() email = msg['snippet'] if "Datos de la transferencia que recibiste Monto $" in email: # 匹配$X.XXX格式的金额 matches = re.findall(r'\$\d{1}\.\d{3}', email) if matches: # 提取第一个匹配结果,去掉$符号 money_amount = matches[0].replace('$', '') # 按要求格式输出 print("Transaction Recieved"," $ " , money_amount,"!") # 标记邮件为已读 service.users().messages().modify(userId='me', id=message['id'], body={'removeLabelIds': ['UNREAD']}).execute()
如果后续遇到金额整数部分超过1位的情况(比如$12.345),可以把正则调整为r'\$\d+\.\d{3}',其中+表示匹配1个或多个数字,适配更多金额格式。
内容的提问来源于stack exchange,提问作者Enanooo12
相关产品推荐
相关产品推荐

