行正则表达式贪婪组

我试图在Python中解析以下示例文本:

Foo 1
foo1Text

Bar 
bar1Text

Baz 
baz1Text

Foo 2
foo2Text

Bar 
bar2Text

Baz 
baz2Text

# and so on up to Foo/Bar/Baz N

现在,我使用的正则表达式是:

([S ]+)(n*)([sS]*?)Bar([sS]*?)Baz([sS]*?)

现在 - 我想要做的是提出与foo / bar / baz相关的文本。 但是,在正则表达式的末尾使用惰性限定符, ? 表情停顿并且错过了baz2text 。 相反,使它贪婪与最后一组的一部分相匹配。

如果可能,我宁愿不使用数字限定符,并基于以下条件进行大致匹配:

{title}
{stuff about title}

Bar
{stuff about Bar}

Baz
{stuff about Baz}

所以我可以遍历每个匹配并相应地提取组。 请注意,我没有谈到提取混凝土输出的情况。 我最感兴趣的是获得正则表达式'组',因此它们代表: {title}{stuff about title}{stuff about bar}{stuff about Baz}

我正在和regex101混在一起,看看我能否确定正确的咒语是无济于事的。

这是其中很容易手动完成的问题之一。 但后来我什么也学不到! :)我很想知道我是否应该在这里使用一些更清洁的机制/策略。

非常感谢


如果你知道FooBaz之后的下一个组,那么你需要的是前瞻: ([S ]+)(n*)([sS]*?)Bar([sS]*?)Baz([sS]*?)(?=Foo)

Lookaheads是零宽度断言,所以它确保紧跟在后面的匹配,但不会改变当前位置。

链接地址: http://www.djcxy.com/p/74779.html

上一篇: line regex greedy group

下一篇: Alternation in atomic grouping is useless?