Замена совпавшего текста
Эта функция заменяет весь или часть текста, совпавшего с последним поиском. Она работает с помощью данных о совпадении.
- Функция: replace-match replacement &optional fixedcase literal string subexp
-
Эта функция выполняет операцию замены в буфере или строке.
Если последний поиск был выполнен в буфере, вы должны опустить аргумент string или указать
nilдля него и убедиться, что текущий буфер — тот, в котором был произведён последний поиск. Тогда эта функция отредактирует буфер, заменив совпавший текст на replacement. Курсор будет установлен в конце заменённого текста.Если последний поиск был выполнен в строке, передайте ту же строку в качестве string. Тогда эта функция вернёт новую строку, в которой совпавший текст заменён на replacement.
Если fixedcase не
nil, тоreplace-matchиспользует текст замены без преобразования регистра; в противном случае, она преобразует текст замены в зависимости от регистра заменяемого текста. Если исходный текст написан заглавными буквами, то текст замены преобразуется в заглавные буквы. Если все слова исходного текста написаны с заглавной буквы, то все слова текста замены будут написаны с заглавной буквы. Если все слова — однобуквенные и написаны заглавными буквами, они рассматриваются как слова с заглавной буквы, а не как слова, написанные целиком заглавными буквами.Если literal не
nil, то replacement вставляется точно так, как есть, с изменениями регистра по мере необходимости. Если оно равноnil(по умолчанию), символ ‘\’ обрабатывается особым образом. Если символ ‘\’ встречается в replacement, то он должен быть частью одной из следующих последовательностей:- ‘\&’
-
Это обозначает весь заменяемый текст.
- ‘\n’, где n — цифра
-
Это обозначает текст, соответствующий n-му подвыражению в исходном регулярном выражении. Подвыражения — это выражения, заключённые в ‘\(…\)’. Если n-е подвыражение никогда не совпадало, подставляется пустая строка.
- ‘\\’
-
Это обозначает одиночный символ ‘\’ в тексте замены.
- ‘\?’
Это обозначает себя (для совместимости с
replace-regexpи похожими командами; см. Замена по регулярному выражению в Руководстве по GNU Emacs).
Любой другой символ, следующий за ‘\’, сигнализирует об ошибке.
Замены, выполняемые ‘\&’ и ‘\n’, происходят после преобразования регистра, если таковое необходимо. Поэтому строки, которые они подставляют, никогда не преобразуются в регистр.
Если subexp не
nil, это означает, что нужно заменить только подвыражение с номером subexp совпавшего регулярного выражения, а не всё совпадение целиком. Например, после совпадения ‘foo \(ba*r\)’, вызовreplace-matchс 1 в качестве subexp означает замену только текста, соответствующего ‘\(ba*r\)’.
- Функция: match-substitute-replacement replacement &optional fixedcase literal string subexp
Эта функция возвращает текст, который был бы вставлен в буфер функцией
replace-match, но без изменения буфера. Это полезно, если вы хотите показать пользователю фактический результат замены с подстановкой конструкций типа ‘\n’ или ‘\&’ с соответствующими группами совпадений. Аргументы replacement и необязательные fixedcase, literal, string и subexp имеют такое же значение, как и дляreplace-match.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Replacing-Match.html