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

Javascript 我可以使用正则表达式捕获组来阻止该组的连续匹配吗?,javascript,regex,l-systems,Javascript,Regex,L Systems,我已经编写了一个基于正则表达式的Javascript解释器。是否可以使用捕获组来防止后续匹配评估任何先前捕获的匹配 例如: 我以字符串X开头。以下是两条替换规则: X:'F-[[X]+X]+F[+FX]-X' F:'FF' 通过0: X替换为F-[[X]+X]+F[+FX]-X。由于F不在初始字符串中,因此将忽略它 第一关:这里是我想使用捕获组策略的地方。 我首先更换4个Xs。现在,我如何忽略那些匹配项(可能使用捕获组),而只计算字符串的其余部分?使用一个带有替换函数的正则表达式,一个用所需的x

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

例如: 我以字符串
X
开头。以下是两条替换规则:

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

F:'FF'

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

第一关:这里是我想使用捕获组策略的地方。
我首先更换4个
X
s。现在,我如何忽略那些匹配项(可能使用捕获组),而只计算字符串的其余部分?

使用一个带有替换函数的正则表达式,一个用所需的
x
替换替换
x
的正则表达式,以及用所需的
f
替换替换替换
s的正则表达式,因此它们都可以一次完成,无需干扰捕获组:

const replacements={
X:'F-[[X]+X]+F[+FX]-X',
F:‘FF’
};
const doReplace=str=>str.replace(/[XF]/g,match=>replacements[match]);
常数r1=doReplace('X');
常数r2=多雷普莱斯(r1);
控制台日志(r1);

控制台日志(r2)XF
字符串变成
F-[[X]+X]+F[+FX]-XFF
,而不是
FF-[[X]+X]+FF[+FFX]-XFF
,是吗?显示一些中间步骤。更详细地说,像pass1。通常,要忽略某些内容,您必须匹配它,然后将其写回<代码>((?:F-\[\[X\]+X\]+F\[+FX\]-X)*);((?:(?!F-\[\[X\]+X\]+F\[+FX\]-X)+)
确实@CertainPerformance。我目前使用了一种添加垃圾防护符号的方法,在所有比赛结束后我会丢弃它。你的答案就是票,伙计,太棒了!非常感谢。