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

如何利用Python正则表达式提取带编号的多行注解组内容?

正则表达式提取分组内容问题

需求说明

原始文本:

1. @aut1.or
@Autowired
2. @Override
@param
@SuppressWarnings

期望提取结果:

['1. @aut1.or\n@Autowired', '2. @Override\n@param\n@SuppressWarnings']

现有代码问题

当前代码仅能提取每个分组的第一行,无法捕获后续关联内容:

import re

txt ='''1. @aut1.or
@Autowired
2. @Override
@param
@SuppressWarnings'''

x = re.findall("(?:[0-9][.][ ]).+", txt)
print(x)
# 输出: ['1. @aut1.or', '2. @Override']

修改方案

利用正则的多行模式和正向否定预查,匹配每个编号条目下的所有后续行,直到下一个编号条目或文本结束。修改后的代码如下:

import re

txt ='''1. @aut1.or
@Autowired
2. @Override
@param
@SuppressWarnings'''

# 正则匹配规则
x = re.findall(r"^\d+\. .+(?:\n(?!\d+\.).+)*", txt, re.MULTILINE)
print(x)

正则规则详解

  • ^\d+\. :匹配行首的编号格式(如1. 、2. )
  • .+:捕获编号行的剩余内容
  • (?:\n(?!\d+\.).+)*:非捕获组,匹配所有换行后不以编号开头的行,*表示可匹配0到多组这类行
  • re.MULTILINE:开启多行模式,让^匹配每一行的行首,而非整个文本的开头

运行后输出结果:

['1. @aut1.or\n@Autowired', '2. @Override\n@param\n@SuppressWarnings']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:32:07