Emacs: как заменить строку с помощью регулярного выражения?

предположите, что у меня есть следующее в текстовом файле (или сушеный буфер) открытый в emacs: file_01.txt file_02.txt... file_99.txt

Я хочу к замене запроса или заменяю файлы к 01_file.txt и т.д.

Я хочу использовать query-replace-regexp или заменить-regexp, но не знаю, что вставить. Поисковая первая часть, вставленная "file_.. ", но".." читаются как периоды в замещающей строке. Я начинаю изучать regexp и не знаю, как сделать это. Помогите, спасибо.

14
задан Luke Girvin 11 March 2012 в 22:28
поделиться

1 ответ

M-x replace-regexp вызывает функцию для замены регулярными выражениями.

Для ввода Replace regexp: \(file\)_\([0-9]+\)

В результате создаются две группы, одна из которых соответствует части 'file', а другая - номеру. Скобки \( ... \) необходимы для того, чтобы это совпадение стало доступным позже в строке замены.

Для Замените на enter: \2_\1

Здесь вставляется второе совпадение из строки поиска (числовая часть), добавляется _ (подчеркивание), а затем добавляется первое совпадение из строки поиска ("файл").

Более подробную информацию о регулярных выражениях Emacs смотрите в Regexp Syntax и Regexplace.

После того, как Вы освоили основы регенерации, Вы можете обратиться к инструменту Emacs ReBuilder с помощью M-x rebuilder, который позволяет Вам строить регенераторы интерактивно.

.
27
ответ дан 1 December 2019 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: