Skip to main content
 首页 » 编程设计

python之在 python 中使用多个正则表达式提取特定文本

2024年08月26日27Leo_wl

我在 python 3 中使用正则表达式时遇到问题,所以如果有人能帮助我,我会很高兴。我有一个如下所示的文本文件:

Header A 
text text 
text text 
Header B 
text text 
text text 
Header C 
text text 
here is the end 

我想做的是在标题之间列出一个文本列表,但包括标题本身。 我正在使用这个正则表达式:

 re.findall(r'(?=(Header.*?Header|Header.*?end))',data, re.DOTALL) 

结果来了

['Header A\ntext text\n text text\n Header', 'Header B\ntext text\n text text\n Header', 'Header C\n text text here is the end'] 

问题是我在列表中的每个项目的末尾都得到了下一个标题。正如您所看到的,当我们找到下一个 header 时每个 header 都会结束,但最后一个 header 不会以特定方式结束

有没有办法使用正则表达式获取每个标题的列表(不是元组),包括它自己的文本作为子字符串?

请您参考如下方法:

Header [^\n]*[\s\S]*?(?=Header|$) 

试试这个。查看演示。

https://regex101.com/r/iS6jF6/21

import re 
p = re.compile(r'Header [^\n]*[\s\S]*?(?=Header|$)') 
test_str = "Header A\ntext text\ntext text\nHeader B\ntext text\ntext text\nHeader C\ntext text\nhere is the end" 
 
re.findall(p, test_str)