正则表达式匹配标题和子标题,后跟子弹列表

时间:2015-12-09 21:45:11

标签: python regex

我正在尝试捕获标题/子部分中的文本以及它后面的项目符号列表:

re.finditer('(?!^\* )(?P<description>^.+?)(?P<items>^\* .+?^)(?!^\* )', 
            text, flags=re.DOTALL | re.MULTILINE)

使用此示例文本:

Header A
Subheader A
* Item A
* Item B
* Item C
Header B
Subheader B
Description B
* Item 1
* Item 2
* Item 3
Random Header C
* Item X
* Item Y
* Item Z

Random Header C及其子弹列表外,该表达式有效。解决方法是在\n\n之后添加两个尾随换行符* Item F。知道如何匹配最后一节或者有更好的方法吗?

https://regex101.com/r/yG7sJ6/1

1 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式捕获缺失的项目:

(?P<description>^.+?)(?P<items>(?:^\* [^\n]+(?:\n|$))+)

RegEx Demo