Next: , Previous: Match Data, Up: Match Data


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

この関数は、最後の探索で一致したテキストをreplacementで置換します。

— Function: replace-match replacement &optional fixedcase literal string subexp

この関数は、最後の探索で一致したバッファ内(あるいは文字列string)の テキストを置換する。 当該テキストをreplacementで置き換える。

バッファで最後に探索を行った場合には、 stringnilを指定すること。 そうすると、replace-matchはバッファを編集することで置換を行い、 置換したテキストの末尾にポイントを置きtを返す。

文字列で探索した場合には、stringに同じ文字列を渡すこと。 そうすると、replace-matchは新たな文字列を構築することで 置換を行い、新たな文字列を返す。

fixedcasenil以外であると、 置換テキストの大文字小文字は変更しない。 さもなければ、置換テキストの大文字小文字は、 対象テキストの大文字小文字に応じて変換される。 元テキストがすべて大文字であると、置換テキストも大文字に変換される。 元テキストの最初の単語が大文字で始まっていると、 置換テキストの最初の単語も大文字で始める。 元テキストが1単語のみであり、しかも、その単語が大文字1文字であると、 replace-matchはすべてが大文字ではなく大文字で始まるとみなす。

case-replacenilであると、 fixed-caseの値に関わらず、大文字小文字変換を行わない。 see Searching and Case

literalnil以外であると、 必要に応じて大文字小文字変換は行うものの replacementをそのまま挿入する。 それがnil(デフォルト)であると、 文字‘\’を特別に扱う。 replacementに‘\’が現れるときには、 つぎの列のいずれかであること。

\&
\&’は置換対象のテキスト全体を表す。
\n
nを数字文字とすると‘\n’は、 もとの正規表現内のn番目の部分式に一致したテキストを表す。 部分式とは、‘\(...\)’で囲んでグループ化した式である。
\\
\\’は置換テキスト内で1つの‘\’を表す。

subexpnil以外であると、 一致箇所全体ではなく正規表現のsubexp番目の部分式に 一致した箇所のみを置換することを指示する。 たとえば、‘foo \(ba*r\)’に一致させたあとで、 subexpに1を指定してreplace-matchを呼び出すと、 ‘\(ba*r\)’に一致したテキストのみを置換することを意味する。