python - python 正则表达式获取所有内容,直到特定字符串
问题描述
我有以下字符串:
This is the most recent email of this thread
More text
From: a@a.com
Date: 13 August, 2018
More text...
From: a@a.com
Sent: Tuesday 23 July
To: b@b.com, c@c.com
Subject: Test
我需要提取所有内容,直到这个字符串组合:
From: *
Sent: *
To: *
Subject: *
*
充当通配符。
所以我的结果应该是:
This is the most recent email of this thread
More text
From: a@a.com
Date: 13 August, 2018
More text...
我想用正则表达式过滤它,但我无法弄清楚。任何指针?
这是我在 regex101 中尝试的正则表达式模式,但由于某种原因它在我的 python 脚本中不起作用:
r"([\w\W\n]+?)\n((?:from:[^\n]+)\n+((?:\s*sent:[^\n]+)\n+(?:\s*to:[^\n]+)\n*(?:\s*cc:[^\n]+)*\n*(?:\s*bcc:[^\n]+)*\n*(?:\s*subject:[^\n]+)*))"
谢谢!
解决方案
您可以尝试使用re.findall
积极的前瞻性。这里的方法是匹配从字符串开头到但不包括应该停止匹配的文本块的所有内容。
inp = """This is the most recent email of this thread
More text
From: a@a.com
Date: 13 August, 2018
More text...
From: a@a.com
Sent: Tuesday 23 July
To: b@b.com, c@c.com
Subject: Test"""
stop_text = """From: a@a.com
Sent: Tuesday 23 July
To: b@b.com, c@c.com
Subject: Test"""
matches = re.findall(r'^.*?(?=' + stop_text + ')', inp, flags=re.DOTALL)
print(matches)
这打印:
['This is the most recent email of this thread\n\nMore text\n\nFrom: a@a.com\nDate: 13 August, 2018\n\nMore text...\n\n']
推荐阅读
- javascript - 使用 MSE 播放 RTSP H264 流
- c# - 无法在 iPhone Xamarin 表单中访问 AD 登录
- python - python字符串转义序列模拟不起作用
- angular - RxJs/NgRx - is there a way to "Cancel" a stream after the delay operator
- database - 带有 docker swarm 的高可用性数据库 ( postgresql )
- c++ - 实现动态插件管理器
- loops - IBM ODM - 如何迭代列行(如在给定示例中)
- c++ - 使用 jsoncpp 解析 json 数组字符串
- reactjs - 哪些文件或文件夹应该在 React 项目的 .gitignore 中?
- python - 如何从文件中读取 NetworkX 图的数据