You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rebol/Red Parse:如何在两个标记之间复制内容

解决Rebol/Red Parse规则中复制两个标记间内容的问题

我来帮你搞定这个Parse规则的问题~你原来的写法逻辑顺序有点问题,导致结果不符合预期,咱们一步步理清楚:

原代码的问题分析

你写的规则:

rule: [ to "b" mark1: thru "e" mark2: to mark1 copy text to mark2 ]

这里的核心错误是Parse的to指令只能向前扫描,不能回溯:

  • 执行到mark2:时,当前位置已经在"e"的后面(因为thru "e"会跳过整个"e"字符串);
  • 接下来的to mark1试图从"e"之后的位置往回找mark1的位置,这完全违背了Parse的扫描逻辑,自然得不到正确的结果。

正确的实现方式

我们需要调整顺序,先记录起始和结束的位置标记,再直接复制两个标记之间的内容:

src: {a b c d e f}
rule: [
    to "b" mark1:  ; 定位到"b"的起始位置,记录标记点mark1
    thru "e" mark2: ; 扫描过"e",此时mark2停在"e"的后面
    copy text mark1 to mark2  ; 从mark1复制到mark2的位置
]

; 执行解析并输出结果
parse src rule
print text  ; 输出:b c d e

逻辑说明

  1. to "b":向前扫描,直到找到"b"的起始位置;
  2. mark1::记录当前位置作为内容的起始点;
  3. thru "e":继续向前扫描,直到跳过整个"e"字符串;
  4. mark2::记录当前位置作为内容的结束点;
  5. copy text mark1 to mark2:从mark1标记的位置开始,复制到mark2标记的位置,结果存入text变量。

这样就能准确获取"b"到"e"之间的完整内容啦~

内容的提问来源于stack exchange,提问作者user310291

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:29:54