使用正则表达式在多个标志之间获取文本

时间:2018-05-07 09:58:40

标签: regex python-3.x

我有以下文字:

  
      
  1. 第一个标题这是标题1数据
  2.   
  3. 第二个标题:这是标题2数据
  4.   
  5. 第三个标题,这是标题3数据
  6.   

所以,我正在尝试编写一个正则表达式。我知道要在标题1和标题2之间提取数据,以下正则表达式将起作用

The first Heading(.*?)The second header

以上将给出文字"这是标题1数据"。 但是,我想要得到的是查找所有正则表达式的标题,它将返回如下列表

["This is heading 1 data","This is heading 2 data","This is heading 3 data"]

我想到的是以下

The first Heading(.*?)The second header(.*?)third header (.*?)

但是,我没有得到上述正则表达式的任何数据。任何人都可以帮助我解决方案

1 个答案:

答案 0 :(得分:0)

这应该这样做:

import re

a = '''Heading 1 This is heading 1 data
Heading 2 This is heading 2 data
Heading 3 This is heading 3 data'''

print(re.findall('(?<=Heading \d\s)(.*)(?:Heading \d|$)?', a)))
#['This is heading 1 data', 'This is heading 2 data', 'This is heading 3 data']