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

Python3.6使用正则从多行文本中提取RECT间隔内容存入数组

Python3.6 提取多段RECT标记间内容的解决方案

问题原因

原有正则存在两个核心问题:

  • 未开启单行模式,.默认无法匹配换行符,无法跨行捕获内容
  • 没有限制匹配终止边界为下一个RECT或MMMM标记,会一次性捕获第一个RECT后的全部内容

正确实现代码

import re

# 待处理文本
text = """RECT  
texttextetxtsd  
text  
texttexttexttext  
RECT  
texttextetxtwes  
text  
texttexttexttext  
text  
MMMM"""

# 正则匹配:开启单行模式+非贪婪匹配+正向预查限定终止边界
result = re.findall(r'RECT\s*(.*?)(?=\s*(?:RECT|MMMM))', text, flags=re.S)

# 输出结果
print(result)

正则说明

  • RECT\s*:匹配RECT标记及其后的所有空白字符(含换行),跳过标记与内容之间的空白
  • (.*?):非贪婪捕获所有字符,作为最终提取的内容段
  • (?=\s*(?:RECT|MMMM)):正向零宽预查,匹配到下一个RECT或终止标记MMMM的前序位置就停止,不会将标记本身纳入捕获结果
  • flags=re.S:开启单行模式,让.可以匹配换行符,适配多行内容的提取需求

运行输出

输出的数组每个元素对应两个RECT(或最后一个RECT到MMMM)之间的内容,符合预期:

['texttextetxtsd  \ntext  \ntexttexttexttext', 'texttextetxtwes  \ntext  \ntexttexttexttext  \ntext']

如果需要去除每行末尾的多余空格,可以对结果做二次处理:

processed_result = ['\n'.join(line.rstrip() for line in segment.split('\n')) for segment in result]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:06:02