【问题标题】:Getting contents of string, between two given sub-strings, using regex使用正则表达式获取两个给定子字符串之间的字符串内容
【发布时间】:2017-06-22 14:20:33
【问题描述】:

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

我想我需要一些描述的 split() 操作,在捕获字符串中使用正则表达式包含 '===SOMETEXT==='。

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

示例输入:

===摄像机===
{{main|摄像机}}
摄像机是一种结合了摄像机和录像机的电子设备。虽然 营销材料可能使用俗称“摄像机”,名称 包装和说明书上往往是“录像机”。最多 能够录制视频的设备是照相手机和数码 主要用于静态图片的相机;术语“摄像机”是 用于描述具有视频捕获功能的便携式、独立设备 并记录其主要功能。

===专业摄像机===
{{main|专业摄像机}}
专业摄像机(通常甚至称为电视摄像机) 尽管使用范围已超出 [[television]]) 是高端设备 用于创建电子运动图像(而不是 [[movie 相机]],之前将图像记录在 [[filmstock|film]])上。 最初开发用于 [[television studio]],它们现在是 也用于 [[音乐视频]]s、[[direct-to-video]] 电影、公司 以及教育视频、婚姻视频等。

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

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

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

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

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

【问题讨论】:

  • 到目前为止你尝试过什么?

标签: regex python-3.x split


【解决方案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')

【讨论】:

    猜你喜欢
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多