我在 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)
