次の解析の問題があります。以下の最初のサンプル テキストでは、解析はテキスト内のパーツを見つけるときに 2 つのコマンド ブロックにヒットします。
以下を試してみてください(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
ただし、見つかったテキストを削除することが期待されるコマンドの変更/部分部分を挿入すると、最初の変更/部分が実行されますが、2番目の実行ブロックがトリガーされないため、解析コマンドの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" 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>"
2 番目のコマンドは、Print が実行されておらず、解析が完了していないため、実行されていないように見えることに注意してください。
これらの HTML の一部を削除しようとしているテキストには複数の異なる種類のリンクがあり、同じテキストに複数のリンクがあるため、PARSE が適切なソリューションであると考えました。
誰かが私が間違っていることを見ることができますか?