Parsing Rebo/Red parse:是否可以在嵌入嵌套div的两个标记之间进行复制

Parsing Rebo/Red parse:是否可以在嵌入嵌套div的两个标记之间进行复制,parsing,rebol,red,Parsing,Rebol,Red,接下来,我们现在假设我实现了用带有嵌套div的复杂解析规则标记带有一些标记的字符串无论该规则是什么,是否有一种在mark1和mark2之间复制的通用方法,至少对于这种嵌套div示例有一种特定的方法: { <div> a ; <- mark1 <div> b </div> <div>

接下来,我们现在假设我实现了用带有嵌套div的复杂解析规则标记带有一些标记的字符串无论该规则是什么,是否有一种在mark1和mark2之间复制的通用方法,至少对于这种嵌套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块不是一个值。然后在子规则前面加上所需的发生次数前缀,或者像你在前一个问题中那样计算发生次数。我想得到的是这个