如何利用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
相关产品推荐
相关产品推荐

