具有递归模式的正则表达式来解析 WordPress 古腾堡块

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

我有一个用例来解析 html 注释的 gutenberg 格式。我知道 wordperss 有它自己的 parse_block 函数,但我想在 python 中处理数据。

假设古腾堡格式如下:


<!-- wp:paragraph -->
<p>gdf</p>
<!-- /wp:paragraph -->


<!-- wp:heading -->
<h2 class="wp-block-heading">asga!gs</h2>
<!-- /wp:heading -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading">asdf</h3>
<!-- /wp:heading -->

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"> <!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph -->
<p>asdf</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->

<!-- wp:shortcode -->
[affasdf]
<!-- /wp:shortcode -->

<!-- wp:html -->
asdfasdf
<!-- /wp:html -->

<!-- wp:columns -->
<div class="wp-block-columns"><!-- wp:column -->
<div class="wp-block-column"><!-- wp:heading -->
<h2 class="wp-block-heading">123213</h2>
<!-- /wp:heading --></div>
<!-- /wp:column -->

<!-- wp:column -->
<div class="wp-block-column"><!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph -->
<p>asdfasdggasdf</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:column --></div>
<!-- /wp:columns -->

我需要提取所有5个块:段落,标题,组(外部组,它有嵌套组),简码和列(需要外部组,它也是嵌套的)

我尝试使用支持递归匹配的 python 正则表达式包,但我对内部模式有问题。它应该匹配,直到遇到另一个 gutenberg html 注释标记。

(<!--\s(wp:[a-zA-Z]*)\s(\{.*\}\s)?-->)(?>i have a problem here|(?R))*(<!--\s\/\2\s-->)

如何匹配内部文本直到找到另一个

python regex wordpress wordpress-gutenberg
© www.soinside.com 2019 - 2024. All rights reserved.