You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python正则表达式提取邮件正文并移除转发头及主题行内容

解决思路
  • 核心问题:原正则仅匹配到Subject:标识就停止,未覆盖该行剩余的主题内容及行尾换行符,因此主题内容会保留在截断后的输出里。
  • 修正方案:调整正则匹配范围,匹配到Subject:后继续匹配该行所有字符直到行尾,可额外匹配行尾后的空白换行,直接定位到正文起始位置。
具体实现

修正后完整代码

import re

tmp_text = """---------------------- Forwarded by Phillip K Allen/HOU/ECT on 03/21/2000 
01:24 PM ---------------------------


Stephane Brodeur
03/16/2000 07:06 AM
To: Phillip K Allen/HOU/ECT@ECT
cc:  
Subject: Maps

As requested by John, here's the map and the forecast...
Call me if you have any questions (403) 974-6756.
"""

# 修正后的正则,匹配到Subject行末尾再截断
match_obj = re.search(r'---.*?Subject:.*?\s*\n', tmp_text, re.DOTALL)
if match_obj:
    # 直接取匹配结束位置之后的内容,strip()清理前置空行
    content = tmp_text[match_obj.end():].strip()
    print(content)

输出结果

As requested by John, here's the map and the forecast...
Call me if you have any questions (403) 974-6756.

正则规则说明

  • ---.*?:非贪婪匹配从转发分割线开头到Subject:标识前的所有内容,覆盖发件人、时间、收件人、抄送等所有转发头字段
  • Subject:.*?\s*\n:匹配Subject:开头的整行内容,直到该行结束的换行符,同时吃掉行后多余的空白空行,把整行主题直接纳入待移除范围
  • re.DOTALL:保证.可以匹配换行符,兼容转发头跨多行的场景

内容的提问来源于stack exchange,提问作者Asad Kamal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:18:02