[英]Rebol/Red parse: how to copy between 2 marks
我希望能够在解析规则中解析2个标记之间。 举一个人为的例子:
src: {a b c d e f}
rule: [
to "b" mark1: thru "e" mark2:
to mark1 copy text to mark2
]
这不起作用,文本包含“ [”,而不是我想要的内容:
b c d e
您正在尝试实现使用PARSE复制的“ DO愿望”。 PARSE的COPY正在寻找模式,而不是将系列视为头寸。
您可以通过PAREN!在解析过程中转入DO,如果解析规则到达该点,它将运行。
src: {a b c d e f}
rule: [
to "b" mark1: thru "e" mark2:
(text: copy/part mark1 mark2)
to end ;-- not strictly necessary, but makes PARSE return true
]
parse src rule
那会给你文本为bcde
请注意,使用COPY或TO不能同时使用这两种方法。 TO <series!>
意思是“寻找b”,而不是“跳到b的位置”。 因此,当您说到to mark1
您正在调用另一个匹配项。 如果要将解析位置设置为:mark1
中记录的特定位置 ,请在解析规则中使用:mark1
。
Red中的两个替代解决方案/规则
rule: [
to "b" copy text thru "e" to end
]
和
rule: [ to "b" collect [keep thru "e"] to end]
text: first parse src rule
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.