Skip to main content
 首页 » 编程设计

Python正则表达式,重复数据

2025年05月04日28虾米姐

这似乎是一项简单的任务,但我已经投入了足够的时间来最终寻求帮助:

我有一个大致这种格式的长文本文件:

Start of test xyz:

multiple lines of blah blah blah

Start of test wzy:

multiple lines of blah blah blah

Start of test qqq:

multiple lines of blah blah blah

我想在“测试开始”减速后抓取所有东西,这个表达式让我得到了我需要的大约一半:

re.findall(r'Start of test(.+?)Start of test', curfile, re.S) 

最明显的问题是我正在消耗我接下来需要搜索的内容的开始,因此产生了我想要的大约一半的结果。假设我可以避免,我仍然无法弄清楚如何获得没有“测试开始”结束匹配的最后一个 block 。

我假设我需要使用否定的先行断言,但我没有多少运气来找出使用它们的正确方法,我一直在尝试类似的东西:

re.findall(r'Start of test(.+?)(?!Start of test) 

没有给出有用的结果。

请您参考如下方法:

我想这就是你要找的模式

测试开始(.+?)(?=测试开始|$)

那么你的新代码应该是

re.findall(r'Start of test(.+?)Start of test', curfile, re.S) 

参见 demo