使用正则表达式获取两个给定子字符串之间的字符串内容

时间:2017-06-22 14:20:33

标签: regex python-3.x split

我正在尝试在Python 3中进行一些字符串操作,并且正在努力解决可能在正则表达式中可解决的复杂问题。我自己试图实现这一点,但没有任何运气。

我认为我需要对某些描述进行split()操作,在catch字符串中使用正则表达式包含'=== SOMETEXT ==='。

字符串类型包含一系列标题,下面是段落内容。 我希望以某种方式能够在标题之间提取内容。

示例输入:

  

===摄像机===
  {{主|摄像机}}
  便携式摄像机是一种结合了摄像机和录像机的电子设备。虽然   营销材料可以使用口语“摄像机”这个名称   在包装和手册上经常是“摄像机”。最   能够录制视频的设备是可拍照手机和数码相机   主要用于静态照片的相机;术语“摄像机”是   用于描述具有视频捕获功能的便携式独立设备   并记录其主要功能。

     

===专业摄像机===
  {{main |专业摄像机}}
  专业摄像机(通常称为电视摄像机)   虽然使用范围超出了[[电视]],但它是一种高端设备   用于创建电子动态图像(而不是[[电影]   相机]],早先在[[filmstock | film]]上记录了图像。   最初开发用于[[电视演播室]],他们现在   也用于[[音乐视频]],[[直接视频]]电影,企业   和教育视频,婚姻视频等。

     

这些相机早先使用[[摄像机管|真空管]]和   以后的电子[[图像传感器|传感器]]。

     

===电视摄像机===
  ......等等。

'==='字符串之间的文字可能会有所不同,但始终遵循'=== HEADING-HERE ==='模式。

查询“摄像机”部分的示例输出:

  

便携式摄像机是一种结合了摄像机和摄像机的电子设备   录像机。虽然营销材料可能使用口语   术语“摄像机”,包装和手册上的名称通常是“视频”   摄像机“。大多数能够录制视频的设备都是摄像机   主要用于静态图片的手机和数码相机;该   术语“摄像机”用于描述便携式,独立式   设备,具有视频捕获和记录其主要功能。

1 个答案:

答案 0 :(得分:1)

使用以下正则表达式来捕捉===

之间的所有内容
(?<=(===)).*(?=(====))

您可以使用此正则表达式返回匹配单词列表,然后通过添加到以下正则表达式获取该匹配单词与下一个标题之间的内容:

(?<=(FOUNDHEADING===)).*(?=(===))

这个的python代码看起来像这样:

# IMPORT
import re

# FIND LIST OF HEADINGS
myre = re.compile(r"(?<=(===)).*(?=(====))")
list = myre.findall('Your text with ===HEADINGS=== here')

# POSSIBLY LOOP FOR EACH MATCHED HEADING

# GET CONTENT FOR FIRST HEADING
myre = re.compile(r"(?<=("+list[0]+"===)).*(?=(===))")
content = myre.findall('Your text with ===HEADINGS=== here')