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

Python如何通过匹配数字的正则表达式提取匹配项之间的文本

Python 基于分隔符正则拆分提取中间文本实现方案

问题原因

你之前的拆分逻辑不生效,核心是两个正则使用误区:

  • 默认模式下^和$仅匹配整个文本字符串的首尾位置,无法识别单独占行的456、789这类中间位置的数字行,自然没法完成拆分
  • 正则写法(\d){3}存在冗余捕获组,会额外捕获单个数字字符混入拆分结果,且没有处理拆分后残留的空值、换行空白

可直接运行的正确实现

import re

# 待处理的目标文本
text = """123
text I want to extract is here. 
456
I also need this part
789
and this 
"""

# 核心:开启re.M多行模式,让^$匹配每一行的首尾位置
split_res = re.split(r'^\d{3}$', text, flags=re.M)
# 过滤拆分产生的空项,去除每个文本段首尾多余的空白、换行
final_res = [segment.strip() for segment in split_res if segment.strip()]

print(final_res)

运行后输出完全符合预期:

['text I want to extract is here.', 'I also need this part', 'and this']

复杂场景适配说明

  • 如果实际业务里,三位数字所在行可能前后存在空格、制表符等空白字符,可以把拆分正则调整为r'^\s*\d{3}\s*$',不需要修改其他逻辑就能兼容
  • 如果后续需要同时保留分隔符(也就是对应的三位数字),只需要给正则加对应捕获组即可,核心的re.M多行模式配置不变
  • 这个方案完全基于已有的「匹配数字标识」的正则规则实现,不需要额外编写匹配中间文本的规则,适配复杂业务场景要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:06:27