在文本后用模式匹配所有行,直到模式匹配失败正则表达式

问题描述 投票:0回答:1

我有文字:


{{Verkleinerungsformen}}
:[1] [[Äpfelchen]], [[Äpfelein]], [[Äpflein]]

{{Oberbegriffe}}
:[1] [[Kernobst]], [[Obst]]; [[Frucht]]
:[4] [[Kot]]
:[7] [[Gut]]

{{Unterbegriffe}}
:[1] [[Augustapfel]], [[Bohnapfel]], [[Bratapfel]], [[Essapfel]], [[Fallapfel]], 


我有兴趣提取{{Oberbegriffe}}下所有具有模式[[Text]]的项目包括所有行,直到到达开头没有:[NUMBER-HERE]的另一行

因此在上面的示例中,它应该返回这些字符串的数组:

Kernobst, Obst, Frucht, Kot, Gut

我尝试过的是:

re.search(r'{{Oberbegriffe}}\n(?::?\n)?([^\n]+)', text)

但是它仅匹配完整的第一行。可以用模式提取所有行,然后重新运行此字符串,就可以了

:[1] [[Kernobst]], [[Obst]]; [[Frucht]]
:[4] [[Kot]]
:[7] [[Gut]]
python regex pattern-matching
1个回答
0
投票

您可以使用

(?m)^{{Oberbegriffe}}(?:\n:\[\d+].*)*

请参见regex demo

© www.soinside.com 2019 - 2024. All rights reserved.