Могу ли я использовать группу захвата регулярных выражений для предотвращения последовательных совпадений этой группы?
Я написал интерпретатор Javascript на основе регулярных выражений. Можно ли использовать группы захвата, чтобы предотвратить последующее совпадение от оценки любых ранее захваченных совпадений.
Пример: я начинаю со строки X
, Вот два правила замены:
X: 'F-[[X]+X]+F[+FX]-X'
F: 'FF'
пройти 0: X
заменяется F-[[X]+X]+F[+FX]-X
, поскольку F
не находится в исходной строке, он игнорируется.
проход 1: здесь я хочу использовать стратегию захвата группы. Я сначала заменяю 4 X
s. Теперь, как мне игнорировать эти совпадения - предположительно с использованием групп захвата - и оценивать только оставшуюся часть строки?
1 ответ
Вместо этого используйте одно регулярное выражение с функцией заменителя, которое заменяет x
с желаемым x
замена, и f
с желаемым 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);