【发布时间】:2017-10-28 08:49:27
【问题描述】:
我有一个返回 true 的解析规则,但它没有按预期插入我的文本:html 没有改变,而它应该插入到主关闭 div 的末尾。我尝试使用像How to parse inside HTML tags with REBOL?这样的计数器
更新:我也不知道如何在 counter = 0 时立即中断解析,以免在 main 之后的最后一个关闭 div 之前插入文本。
content: {<div class="main">
<h1>
Big TITLE
</h1>
<div>
<section>
<p>a paragraph</p>
</section>
<section>
<p>a paragraph</p>
</section>
<section>
<p>a paragraph</p>
</section>
</div>
<div>
<p>Blah Blah</p>
</div>
</div>
<div>
Another Div
</div>
}
rules: [
thru <div class="main">
(div-count: 1)
some [
to "<div" (++ div-count) thru "<div" thru ">"
|
to </div> mark: (-- div-count if div-count = 0 [insert mark "closing main div"]) thru </div>
]
to end
]
parse content rules
【问题讨论】:
-
您引用的答案将输入字符串转换为结构化块。如果您自己尝试使用 HTML 进行字符串解析……那就是 danger zooone! PARSE 比 RegEx 和 strictly more powerful 更清晰,但大多数 warning about trying to process HTML directly with RegEx 也适用于 PARSE。见@rgchris 的markup work(他在这里和Red gitter 上聊天)
-
@HostileFork 我不需要也不想要一个完整的 html 解析器,我只需要解析非常具体的 html,因此规则通常非常简单。在上面的例子中,这似乎是微不足道的想法,除了它返回 true 但仍然没有插入,我不明白为什么。
-
我理解保持简单的愿望,但也需要意识到(正如有关 RegEx 的链接帖子指出的那样)存在限制。如果它只是又快又脏,好吧,但那是一次性脚本......
标签: parsing html-parsing rebol red