GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Replacing-Match.html ・ emacs-doc.conao3.com

35.6.1 一致したテキストの置換

この関数は、前回の検索で一致したテキストの全部または一部を置換します。マッチデータを利用して動作します。

関数: replace-match replacement &optional fixedcase literal string subexp

この関数は、バッファまたは文字列に対して置換操作を行います。

直前の検索をバッファ内で行った場合は、string 引数を省略するか nil を指定し、かつ現在のバッファが直前の検索を行ったバッファであることを確認してください。すると、この関数はバッファを編集し、一致したテキストを replacement に置き換えます。ポイントは置換後のテキストの末尾に配置されます。

直前の検索を文字列に対して行った場合は、同じ文字列を string として渡してください。すると、この関数は一致したテキストを replacement に置き換えた新しい文字列を返します。

fixedcase が nil 以外の場合、replace-match は大文字・小文字の変換を行わずに置換テキストを使用します。それ以外の場合は、置換対象テキストの大文字・小文字に応じて置換テキストを変換します。元のテキストがすべて大文字の場合、置換テキストは大文字に変換されます。元のテキストのすべての単語が大文字の場合、置換テキストのすべての単語が大文字になります。すべての単語が1文字でかつすべて大文字の場合、それらはすべて大文字の単語ではなく、大文字の単語として扱われます。

literal が nil 以外の場合、replacement はそのまま挿入され、必要に応じて大文字・小文字の変換のみが行われます。nil(デフォルト)の場合、文字 ‘\’ は特別に扱われます。replacement に ‘\’ が現れる場合、それは以下のいずれかのシーケンスの一部である必要があります:

‘\&’

これは置換対象となるテキスト全体を表します。

‘\n’、ここで n は数字です

これは、元の正規表現におけるn番目の部分式にマッチしたテキストを表します。部分式とは、‘\(…\)’で囲まれた式のことです。n番目の部分式が一度もマッチしなかった場合は、空文字列が置換されます。

‘\\’

これは、置換後のテキストにおける単一の ‘\’ を表します。

‘\?’

これはそれ自体で意味をなします(replace-regexp および関連コマンドとの互換性のため。The GNU Emacs Manual の Regexp Replace を参照)。

‘\’に続くその他の文字は、エラーを示します。

‘\&’および‘\n’による置換は、大文字・小文字の変換(もしあれば)の後に行われます。したがって、これらの置換対象となる文字列が大文字・小文字に変換されることはありません。

subexp が nil でない場合、マッチした正規表現全体ではなく、その中の部分式番号 subexp のみを置換することを意味します。例えば、‘foo \(ba*r\)’ にマッチした後、subexp に 1 を指定して replace-match を呼び出すと、‘\(ba*r\)’ にマッチしたテキストのみを置換することになります。

関数: match-substitute-replacement replacement &optional fixedcase literal string subexp

この関数は、バッファを変更することなく、replace-match によってバッファに挿入されるはずのテキストを返します。‘\n’ や ‘\&’ といった構文をマッチしたグループで置換し、実際の置換結果をユーザーに提示したい場合に有用です。引数 replacement およびオプションの fixedcase、literal、string、subexp は、replace-match と同様の意味を持ちます。