Parsing Rebo/Red parse:是否可以在嵌入嵌套div的两个标记之间进行复制
接下来,我们现在假设我实现了用带有嵌套div的复杂解析规则标记带有一些标记的字符串无论该规则是什么,是否有一种在mark1和mark2之间复制的通用方法,至少对于这种嵌套div示例有一种特定的方法:Parsing Rebo/Red parse:是否可以在嵌入嵌套div的两个标记之间进行复制,parsing,rebol,red,Parsing,Rebol,Red,接下来,我们现在假设我实现了用带有嵌套div的复杂解析规则标记带有一些标记的字符串无论该规则是什么,是否有一种在mark1和mark2之间复制的通用方法,至少对于这种嵌套div示例有一种特定的方法: { <div> a ; <- mark1 <div> b </div> <div>
{
<div>
a ; <- mark1
<div>
b
</div>
<div>
c
</div>
d ; <- mark2
</div>
<div>
e
<div>
f
</div>
<div>
g
</div>
h
</div>
}
rule: [
mark1:
...
mark2:
copy mark1 to mark2
]
对于已经显示的解决方案,这没有问题,但是如果您想让它变得更复杂一点,您可以返回到src中已经定义/标记的点,如本例所示
src: {1234567890abcdefghijklmnopqrstuvxyz}
>> parse src [ skip mark: to "a" mark2: :mark to "3" mark1: to end]
== true
>> mark1
== "34567890abcdefghijklmnopqrstuvxyz"
注意:标记它,使指针返回到先前定义的点
所以你前一个问题的答案是这样的
rule: [
to "b" mark1: thru "e" mark2:
:mark1 copy text to mark2
]
此处根据您的期望点替换b和e,可能是a和d。您是否能够获得标记1和标记2位置以保持指定的位置?如果是这样的话,目前还不清楚这与前面的问题有什么不同。PARSE的COPY关键字在您试图使用它的方式下不起作用。它的意思是复制,而不是复制到。对于任意找到的两个位置,没有PARSE关键字满足您的要求。PARSE的复制总是从当前的解析位置开始复制,如果规则匹配,则总是在规则匹配后结束。@HostileFork好的,谢谢,这就是我担心的。这使得在一些简单的用例场景中解析非常困难,这是一个遗憾?如果您想从解析中返回它作为整体结果,return在Rebol3中是一个parse关键字,所以您也可以说return copy/part mark1 mark2。@Hostilefork像这样吗?对不起,我的例子不好,我想得到的是n个div块不是一个值。然后在子规则前面加上所需的发生次数前缀,或者像你在前一个问题中那样计算发生次数。我想得到的是这个