Эта функция заменяет все или часть текста, совпавшего с последним поиском. Она работает с помощью данных совпадения.
Эта функция выполняет операцию замены в буфере или строке.
Если вы выполняли последний поиск в буфере, вам следует опустить
аргумент string или указать для него nil, и убедиться,
что текущий буфер — это тот, в котором вы выполняли последний поиск.
Затем эта функция редактирует буфер, заменяя совпавший текст на
replacement. Она оставляет курсор в конце замененного текста.
Если вы выполняли последний поиск в строке, передайте ту же строку в string. Затем эта функция возвращает новую строку, в которой совпавший текст заменяется на replacement.
Если fixedcase не равен nil, то
replace-match использует текст замены без преобразования регистра;
в противном случае он преобразует текст замены в зависимости от регистра
текста, который заменяется. Если исходный текст полностью заглавными
буквами, то текст замены преобразуется в заглавные буквы. Если все слова
исходного текста заглавные, то все слова текста замены становятся заглавными.
Если все слова состоят из одной буквы и они все заглавные, они рассматриваются
как заглавные слова, а не как слова, полностью состоящие из заглавных букв.
Если literal не равен nil, то replacement
вставляется в точности так, как он есть, при этом единственными изменениями
являются изменения регистра по мере необходимости. Если он равен nil
(по умолчанию), то символ ‘\’ обрабатывается
особо. Если ‘\’ встречается в replacement,
то он должен быть частью одной из следующих последовательностей:
Это означает весь заменяемый текст.
Это означает текст, совпавший с n-й подвыражением в исходном регулярном выражении. Подвыражения — это выражения, сгруппированные внутри ‘\(…\)’. Если n-е подвыражение никогда не совпало, подставляется пустая строка.
Это означает один символ ‘\’ в тексте замены.
Это означает сам себя (для совместимости с replace-regexp
и связанными командами; см. Regexp Replace в Руководстве GNU Emacs).
Любой другой символ после ‘\’ сигнализирует об ошибке.
Подстановки, выполняемые ‘\&’ и ‘\n’, происходят после преобразования регистра, если таковое имеется. Поэтому строки, которые они подставляют, никогда не преобразуются в регистр.
Если subexp не равен nil, это означает, что
необходимо заменить только подвыражение с номером subexp из
совпавшего регулярного выражения, а не все совпадение. Например, после
совпадения ‘foo \(ba*r\)’, вызов replace-match
с 1 в качестве subexp означает замену только текста, совпавшего с
‘\(ba*r\)’.
Эта функция возвращает текст, который был бы вставлен в буфер
функцией replace-match, но без изменения буфера. Это
полезно, если вы хотите представить пользователю фактический результат замены,
с конструкциями вроде ‘\n’ или ‘\&’
подставленными совпавшими группами. Аргументы replacement и
необязательные fixedcase, literal, string
и subexp имеют то же значение, что и для replace-match.