REGEX匹配两个标题之间的文档部分

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

我正在尝试并且未能编写捕获文档多个部分的python兼容REGEX。我的代码实际上将使用Python,但是现在我只在regex101.com上尝试过正确表达该表达式。 (显然是失败的:))

我的基于文件的文本看起来像这样:

我想全局捕获2个组(标题和正文)。 (即每个部分)。

我的最终目标是像python这样的字典数组;

[{'header':'SYNOPSIS','text':}{'header':'PARAMETER','text':}]

标头部分始终以'。'锚定到行的开头。然后是大写的TEXT。本节的正文包括任何单词和非单词字符,包括CR / LF(基于Windows)。

标头名称不保证是固定的文字或特定的顺序。我也不知道可能存在多少个标题。

现在看起来像这样(^\.[A-Z]+)([\n\W\w]+)

现在,我可以匹配标题和后跟主体,但是我很难告诉REGEX本质上是“当您按下下一个.HEADERTEXT时停止查找。”

我已经创建了Regex101 https://regex101.com/r/YqibeH/4(如果使用的话(不确定如何解决)。 。 。

我的伪代码说的类似,

找到以^。[A-Z]开头的所有行作为捕获组,然后继续匹配标题之后的所有文本(多行)作为第二个捕获组。在下一个以^开头的标头之前停止捕获。[A-Z]

任何帮助都非常感谢。

我正在尝试并且未能编写捕获文档多个部分的python兼容REGEX。我的代码实际上是在Python中,但是现在我只在regex101.com上尝试过获得...

python regex python-3.x multiline
2个回答
1
投票

我相信您正在寻找的是超前的眼光。另外,您正在执行的搜索是贪婪的,应更改为懒惰的量词。话虽如此。这应该可以。


0
投票
text = '<#\n.SYNOPSIS\nThis is the block of code that I would like to have matched along with the .SYNOPSIS header, ' \
       'as this block belongs to SYNOPSIS\n .NOTES\n This block needs to belong with\nNOTES ' \
       'header\n.SOMEOTHERHEADER\nAnd resulting text\n\n#> '
pattern = "(\.[A-Z]+\n)+"
import re

print(re.split(pattern, text))
© www.soinside.com 2019 - 2024. All rights reserved.