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