Parsing 使用更改命令(Rebol2)时分析问题

Parsing 使用更改命令(Rebol2)时分析问题,parsing,rebol,rebol2,Parsing,Rebol,Rebol2,我有以下解析问题。在下面的第一个示例文本中,解析将在找到文本中的部分时命中两个命令块 尝试一下下面的方法(Rebol 2) 但是,如果我插入命令的change/part部分(预期会删除它找到的文本),则会执行第一个change/part,但第二个执行块未触发时,parse命令的第二部分似乎会停止 示例文本:{} 移除定位点:func[示例文本][ 解析示例文本[ 一些[ 至{” 注意,第二个命令似乎没有通过打印未执行和解析未完成来执行 由于我在试图删除这些HTML片段的文本中有多种不同

我有以下解析问题。在下面的第一个示例文本中,解析将在找到文本中的部分时命中两个命令块

尝试一下下面的方法(Rebol 2)



但是,如果我插入命令的change/part部分(预期会删除它找到的文本),则会执行第一个change/part,但第二个执行块未触发时,parse命令的第二部分似乎会停止


示例文本:{}
移除定位点:func[示例文本][
解析示例文本[
一些[
至{”

注意,第二个命令似乎没有通过打印未执行和解析未完成来执行

由于我在试图删除这些HTML片段的文本中有多种不同类型的链接,并且在同一文本中多次出现,我认为解析是正确的解决方案


有人知道我做错了什么吗?

如果使用此功能,您的函数应该可以工作

remove-anchors: func [sample-text][
parse sample-text[
    some [
        to {<a href="javascript:gotoURL('displayContent.aspx?contentID=9} 
        begin:
        thru {);">} 
        ending:  
        (print "Command 1 executed" change/part begin "" ending)       
        :begin                                                  ; note this
        to "<"
        begin:
        thru ">"
        ending:
        (print "Command 2 executed" change/part begin "" ending)       
    ]
]
return sample-text
在函数中,给出以下错误

** Script Error: Out of range or past end
** Where: remove-anchors
** Near: print ending
因此,您必须将解析索引/指针设置回更改/删除文本的点的开头。更改后,您可以使用
:begin

最好的建议是重新设置/初始化内部解析指针,如果您修改了解析输入:删除后,您应该返回到删除的开始,插入/修改后,您应该先返回到新项的开始,然后再返回到新项的结束

sample-text:  {<a href="javascript:gotoURL('displayContent.aspx?contentID=9&language=english#Deferred-member');">deferred member</a>}

remove-anchors: func [sample-text][
    parse sample-text[
        some [
            to {<a href="javascript:gotoURL('displayContent.aspx?contentID=9} 
            begin:
            thru {);">} 
            ending:  
            (print "Command 1 executed" change/part begin "" ending)        ;<<----- change
            to "<"
            begin:
            thru ">"
            ending:
            (print "Command 2 executed" change/part begin "" ending)        ;<<----- change
        ]
    ]
    return sample-text
]
remove-anchors sample-text
Command 1 executed
== "deferred member</a>"
remove-anchors: func [sample-text][
parse sample-text[
    some [
        to {<a href="javascript:gotoURL('displayContent.aspx?contentID=9} 
        begin:
        thru {);">} 
        ending:  
        (print "Command 1 executed" change/part begin "" ending)       
        :begin                                                  ; note this
        to "<"
        begin:
        thru ">"
        ending:
        (print "Command 2 executed" change/part begin "" ending)       
    ]
]
return sample-text
   (print "Command 1 executed" change/part begin "" ending  print ending)        ;<<----- change
** Script Error: Out of range or past end
** Where: remove-anchors
** Near: print ending