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

Python正则表达式如何提取文本文件中以BEGIN/END标记包裹的重复文本块

问题原因

你使用的正则默认开启贪婪匹配,.*会尽可能匹配最长的符合规则的字符串,因此会从文档第一个----BEGIN---开始,一直匹配到最后一个---END结束,最终返回整个文档内容而非独立块。

解决方案

将正则修改为非贪婪匹配,只需在.*后添加?即可,修正后的代码如下:

import re

block_search = re.compile(r'----BEGIN---.*?---END', re.DOTALL)
with open(file, 'r', encoding='utf-8') as f:
    text = f.read()
    result = re.findall(block_search, text)

可选优化

如果你不需要提取结果里包含----BEGIN---和---END标记,可给中间内容添加分组,直接获取块的正文:

# 分组后findall会仅返回分组内匹配的内容
block_search = re.compile(r'----BEGIN---(.*?)---END', re.DOTALL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 08:21:04