Rebol / Red Parse html 规则 returns true 但未插入任何内容
Rebol / Red Parse html rules returns true but nothing is inserted
我有一个 returns 正确的解析规则,但它没有按预期插入我的文本:html 没有改变,而它应该在主要关闭的末尾插入 div。我尝试使用 How to parse inside HTML tags with REBOL?
这样的计数器
更新:我也不知道如何在 counter = 0 时立即中断解析,以免在最后一次关闭 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
这里有一个解决方案 probe to debug
rules: [
thru <div class="main">
(div-count: 1)
some [
"<div" (probe ++ div-count) skip
|
"</div>" mark: ( probe -- div-count if div-count = 0 [insert mark "closing main div"]) skip
| skip
]
]
parse/all content rules
您的规则存在的问题是,div 计数从不或很少被减去。解析指针直接指向下一个开口 div 因为 to 总是第一个满足的条件。
如果在成功条件后添加 到结束 ,则可以从解析中突破或更好地 return。如果您不确定,请使用方括号分组 [ 成功的子规则 ... 以结束 ]
一个带有结束规则的例子
end-rule: [] ; or none
rules: [
thru <div class="main">
(div-count: 1)
some [
["<div" (++ div-count) skip]
|
["</div>"mark: (-- div-count if div-count = 0 [insert mark "closing main div" end-rule: [to end]]) end-rule ]
| skip
]
]
我有一个 returns 正确的解析规则,但它没有按预期插入我的文本:html 没有改变,而它应该在主要关闭的末尾插入 div。我尝试使用 How to parse inside HTML tags with REBOL?
这样的计数器更新:我也不知道如何在 counter = 0 时立即中断解析,以免在最后一次关闭 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
这里有一个解决方案 probe to debug
rules: [
thru <div class="main">
(div-count: 1)
some [
"<div" (probe ++ div-count) skip
|
"</div>" mark: ( probe -- div-count if div-count = 0 [insert mark "closing main div"]) skip
| skip
]
]
parse/all content rules
您的规则存在的问题是,div 计数从不或很少被减去。解析指针直接指向下一个开口 div 因为 to 总是第一个满足的条件。
如果在成功条件后添加 到结束 ,则可以从解析中突破或更好地 return。如果您不确定,请使用方括号分组 [ 成功的子规则 ... 以结束 ]
一个带有结束规则的例子
end-rule: [] ; or none
rules: [
thru <div class="main">
(div-count: 1)
some [
["<div" (++ div-count) skip]
|
["</div>"mark: (-- div-count if div-count = 0 [insert mark "closing main div" end-rule: [to end]]) end-rule ]
| skip
]
]