1

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

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

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

F: 'FF'

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

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

4

1 回答 1

1

使用带有替换函数的单个正则表达式,将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);

于 2018-10-02T01:04:50.907 回答