これらは、バッファ内のテキストを検索するためのプリミティブ関数です。プログラムでの使用を想定していますが、対話的に呼び出すことも可能です。その場合、検索文字列の入力が求められ、引数
limit と noerror には nil が、repeat には 1
が指定されます。対話的な検索の詳細については、The GNU Emacs Manual の Searching
and Replacement を参照してください。
これらの検索機能は、バッファがマルチバイトの場合は検索文字列をマルチバイトに変換し、バッファがユニバイトの場合は検索文字列をユニバイトに変換します。 テキスト表現を参照してください。
この関数は、point から前方に向かって string と完全一致する箇所を検索します。一致した場合は、point を見つかった箇所の末尾に設定し、point の新しい値を返します。一致しなかった場合の値および副作用は noerror に依存します(後述)。
以下の例では、pointは最初、行の先頭にあります。その後、(search-forward
"fox")がpointを‘fox’の最後の文字の後に移動させます:
---------- Buffer: foo ---------- ∗The quick brown fox jumped over the lazy dog. ---------- Buffer: foo ----------
(search-forward "fox")
⇒ 20
---------- Buffer: foo ----------
The quick brown fox∗ jumped over the lazy dog.
---------- Buffer: foo ----------
引数 limit
は検索範囲の境界を指定し、現在のバッファ内の位置である必要があります。その位置より後方に延びるマッチは認識されません。limit が省略された場合、または nil
が指定された場合は、バッファのアクセス可能な範囲の末尾がデフォルトとなります。
検索に失敗した際に何が起こるかは、noerrorの値によって決まります。noerrorがnilの場合、search-failedエラーが通知されます。noerrorがtの場合、search-forwardはnilを返し、何も行いません。noerrorがnilでもtでもない場合、search-forwardはポインタを上限に移動させ、nilを返します。
引数 noerror は、一致するものが見つからなかった有効な検索にのみ影響します。無効な引数は、noerror に関わらずエラーを引き起こします。
count が正の数 n の場合、検索は n 回行われます。連続する各検索は、直前の一致箇所の末尾から開始されます。これらの連続する検索がすべて成功した場合、関数呼び出しは成功し、ポイントが移動して新しい値が返されます。そうでない場合、関数呼び出しは失敗し、結果は前述の通り noerror の値によって決まります。count が負の数 −n の場合、検索は逆方向(後方)に n 回行われます。
この関数は、point から後方に向かって string を検索します。search-forward
と同様ですが、前方ではなく後方を検索する点が異なります。後方検索を行うと、point はマッチの先頭に残ります。
この関数は、ポイントから前方を検索して string に一致する単語を探します。一致するものが見つかった場合、ポイントをその一致箇所の末尾に設定し、ポイントの新しい値を返します。
単語マッチングでは、string を単語の並びとして扱い、単語を区切る句読点は無視します。バッファ内から同一の単語列を検索します。バッファ内では各単語が一意である必要がありますが(単語 ‘ball’ の検索は単語 ‘balls’ とは一致しません)、句読点や空白の詳細は無視されます(‘ball boy’ の検索は ‘ball. Boy!’ と一致します)。
この例では、pointは最初バッファの先頭にあります。検索の結果、‘y’と‘!’の間に位置することになります。
---------- Buffer: foo ---------- ∗He said "Please! Find the ball boy!" ---------- Buffer: foo ----------
(word-search-forward "Please find the ball, boy.")
⇒ 39
---------- Buffer: foo ----------
He said "Please! Find
the ball boy∗!"
---------- Buffer: foo ----------
limit が nil
でない場合、それは現在のバッファ内の位置である必要があり、検索の上限を指定します。見つかったマッチは、その位置を超えて広がってはなりません。
noerror が nil の場合、検索に失敗すると
word-search-forward がエラーを通知します。noerror が t の場合、エラーを通知する代わりに
nil を返します。noerror が nil でも t でもない場合、ポインタを limit(またはバッファのアクセス可能な部分の末尾)に移動し、nil を返します。
count が正の数の場合、連続して何回検索するかを指定します。ポイントは最後のマッチの末尾に配置されます。count が負の数の場合、検索は逆方向に行われ、ポイントは最後のマッチの先頭に配置されます。
内部的には、word-search-forward および関連関数は関数 word-search-regexp を用いて、string
を句読点を無視する正規表現に変換します。
このコマンドは word-search-forward と同一ですが、string が空白文字で始まったり終わったりしない限り、string
の先頭または末尾が単語境界に一致する必要はありません。例えば、‘ball
boy’ を検索すると ‘ball boyee’
には一致しますが、‘balls boy’ には一致しません。
この関数は、point から後方に向かって string に一致する単語を検索します。この関数は
word-search-forward と同様ですが、後方に向かって検索し、通常はマッチの開始位置に
point を残す点が異なります。
このコマンドは word-search-backward と同一ですが、string が空白文字で始まったり終わったりしない限り、string
の先頭または末尾が単語境界に一致する必要はありません。