我有以下解析问题。在下面的第一个示例文本中,解析将在找到文本中的部分时命中两个命令块。
试试下面的(Rebol 2)。
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" )
to "<"
begin:
thru ">"
ending:
(print "Command 2 executed" )
]
]
return sample-text
]
结果:
remove-anchors sample-text
Command 1 executed
Command 2 executed
但是,如果我插入命令的 change/part 部分,预计会删除它找到的文本,第一个 change/part 会执行,但 parse 命令的第二部分似乎停止,因为第二个执行块没有触发.
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>"
请注意,第二个命令似乎并没有通过打印未执行和解析未完成来执行。
由于我在文本中有多种不同类型的链接,我试图从中删除这些 HTML 片段,并且在同一文本中多次出现,我认为 PARSE 是正确的解决方案。
谁能看到我做错了什么?