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

12.2 re-search-forward 関数

re-search-forward 関数は search-forward 関数と非常によく似ています。(search-forward 関数 を参照してください。)

re-search-forward は正規表現を検索します。検索に成功した場合、ターゲットの最後の文字の直後にポイントを移動します。検索が逆順だった場合は、ターゲットの最初の文字の直前にポイントを移動します。re-search-forward に true のときに t を返すよう指定できます。(したがって、ポイントの移動は副作用となります。)

search-forwardと同様に、re-search-forward関数は4つの引数を取ります:

  1. 第1引数は、関数が検索対象とする正規表現です。正規表現は引用符で囲まれた文字列となります。
  2. 省略可能な第2引数は、関数が検索する範囲を制限します。これは境界であり、バッファ内の位置を指定します。
  3. 省略可能な第3引数は、関数が失敗時にどのように動作するかを指定します。第3引数に nil を指定すると、検索に失敗した際に関数がエラーを通知(およびメッセージを出力)します。それ以外の値を指定すると、検索失敗時に nil を、検索成功時に t を返します。
  4. 省略可能な第4引数は繰り返し回数です。繰り返し回数が負の場合、re-search-forwardは逆方向に検索します。

re-search-forwardのテンプレートは次のようになっています。

(re-search-forward "regular-expression"
                limit-of-search
                what-to-do-if-search-fails
                repeat-count)

第2、第3、第4引数は省略可能です。ただし、最後の2つの引数のいずれか、あるいは両方に値を渡したい場合は、それに先立つすべての引数にも値を渡す必要があります。そうしないと、Lispインタプリタはどの引数に値を渡しているのかを誤認してしまいます。

forward-sentence 関数では、正規表現は変数 sentence-end の値となります。簡単に言うと、次のようになります。

"[.?!][]\"')}]*\\($\\|  \\|  \\)[
]*"

検索範囲は段落の末尾までとなります(文が段落を超えることはないため)。検索に失敗した場合、関数は nil を返し、繰り返し回数は forward-sentence 関数の引数で指定されます。