Могу ли я использовать группу сбора регулярных выражений для предотвращения последовательных совпадений этой группы? - PullRequest
0 голосов
/ 02 октября 2018

Я написал интерпретатор Javascript на основе регулярных выражений.Можно ли использовать группы захвата, чтобы предотвратить последующее совпадение от оценки любых ранее захваченных совпадений.

Пример: я начинаю со строки X.Вот два правила замены:

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

F: 'FF'

pass 0: X заменяется на F-[[X]+X]+F[+FX]-X.Поскольку F отсутствует в исходной строке, она игнорируется.

pass 1: здесь я хочу использовать групповую стратегию захвата.Я сначала заменяю 4 X с.Теперь, как мне игнорировать эти совпадения - предположительно с использованием групп захвата - и оценивать только оставшуюся часть строки?

1 Ответ

0 голосов
/ 02 октября 2018

Вместо этого используйте одно регулярное выражение с функцией заменителя, которое заменяет x s желаемой заменой x, а f s желаемой заменой 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);
...