我正在尝试并且未能编写捕获文档多个部分的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上尝试过获得...
我相信您正在寻找的是超前的眼光。另外,您正在执行的搜索是贪婪的,应更改为懒惰的量词。话虽如此。这应该可以。
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))