6

Я пытаюсь преобразовать довольно длинную последовательность значений в другой формат, используя команду emacs replace-regex. Существует более 9 значений для извлечения, поэтому обратных ссылок \1 - \9 недостаточно.

Как я могу ссылаться на более чем 9 групп захвата в Emacs? Можно ли использовать именованные группы? Если так, то как?

1 ответ1

7

Начиная с Emacs 23, вы можете включить код Lisp в текст замены регулярного выражения. Это дает вам возможность использовать больше обратных ссылок. Функция match-string возвращает пронумерованные обратные ссылки.

\1 … \9 \,(or (match-string 10) "")

Начиная с Emacs 22, если в регулярном выражении есть какая-либо заключенная в скобки группа, для которой вам не требуется обратная ссылка, используйте \(?:…\) (Emacs называет это застенчивой группой).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .