我可以使用正则表达式捕获组来防止该组的连续匹配吗?

Can I use a regex capturing group to prevent successive matches of that group?

我写了一个Javascript 基于正则表达式的解释器。是否可以使用捕获组来防止后续匹配评估任何先前捕获的匹配。

示例: 我从一个字符串 X 开始。这里有两个替换规则:

X: 'F-[[X]+X]+F[+FX]-X'

F: 'FF'

通过 0: X 替换为 F-[[X]+X]+F[+FX]-X。由于 F 不在初始字符串中,因此将被忽略。

pass 1:这里是我想使用捕获组策略的地方。 我首先替换了 4 Xs。现在,我如何忽略这些匹配 - 大概使用捕获组 - 并且只评估字符串的其余部分?

改用带有替换函数的单个正则表达式,将 xs 替换为所需的 x 替换,将 fs 替换为所需的 f 替换, 所以他们一次就完成了,不需要搞乱捕获组:

const replacements = {
  X: 'F-[[X]+X]+F[+FX]-X',
  F: 'FF'
};
const doReplace = str => str.replace(/[XF]/g, match => replacements[match]);
const r1 = doReplace('X');
const r2 = doReplace(r1);
console.log(r1);
console.log(r2);