gpt4 book ai didi

python - 查找两个字符串之间的最短匹配

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:03 24 4
gpt4 key购买 nike

我有一个很大的日志文件,我想提取两个字符串之间的多行字符串:startend

以下是输入文件中的示例:

start spam
start rubbish
start wait for it...
profit!
here end
start garbage
start second match
win. end

所需的解决方案应打印:

start wait for it...
profit!
here end
start second match
win. end

我尝试了一个简单的正则表达式,但它返回了 start spam 中的所有内容。应该怎么做?

编辑:关于现实生活计算复杂性的附加信息:

  • 实际文件大小:2GB
  • “开始”的出现次数:~ 12 M,均匀分布
  • 'end' 的出现次数:~800,接近文件末尾。

最佳答案

这个正则表达式应该匹配你想要的:

(start((?!start).)*?end)

使用re.findall 方法和单行修饰符re.S 获取多行字符串中的所有出现:

re.findall('(start((?!start).)*?end)', text, re.S)

查看测试here .

关于python - 查找两个字符串之间的最短匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24640154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com