根据http://www.rebol.com/docs/core23/rebolcore-15.html
您可以使用更改/部分进行解析和替换,但这不适用于我只是尝试替换块
<mytag > ... </mytag>
by“MyString”
content: {<mytag id="a" 111111111111111>
</mytag>
aaaaaaaaaaaaaaa
aaaaaaaaaaaaaaa
<mytag id="b" 22222222222222222>
</mytag>
<mytag id="c" 3333333333333>
</mytag>
aaaaaaaaaaaaaaa
aaaaaaaaaaaaaaa
<mytag id="d" 444444444444444>
</mytag>
}
mytag: [ to {<mytag} start: (
)
thru {<mytag}
to {id="} thru {id="} copy ID to {"} thru {"}
to {</mytag>}
thru {</mytag>}
ending:
(change/part start "mystring" ending)
mark:
( write clipboard:// mark
input)
]
rule: [any mytag to end]
parse content rule
答案 0 :(得分:3)
我指出你看看http://en.wikibooks.org/wiki/REBOL_Programming/Language_Features/Parse#Modifying_the_input_series
答案 1 :(得分:2)
Ladislav的建议是在不改变输入流的情况下解决它,这会导致性能问题并且难以调试。只需单独构建输出。 e.g。
result: copy ""
mytag: [
[
copy text to {<mytag} (if text [append result text])
thru {<mytag}
to {id="} thru {id="} copy ID to {"} thru {"}
thru {</mytag>}
(append result reform ["__" ID "__"])
]
|
skip
]
rule: [any mytag to end]
parse content rule
result