Next: Regular Expressions, Previous: Searching and Matching, Up: Searching and Matching
これらは、バッファ内のテキストを探索するための基本関数です。
これらはプログラムで使うことを意図していますが、
対話的に呼び出すこともできます。
その場合、探索文字列を問い合わせてきますが、
limitとnoerrorはnil
に、repeatは1に設定されます。
これらの探索関数は、バッファがマルチバイトであると 探索文字列をマルチバイトに変換します。 バッファがユニバイトであると探索文字列をユニバイトに変換します。 See Text Representations。
この関数は、ポイントから前方へ向けて文字列stringに ちょうど一致するものを探す。 それに成功すれば、ポイントをみつけた出現箇所の末尾に移動し、 ポイントの新たな値を返す。 一致がみつからなければ、戻り値と副作用はnoerrorに依存する(下記参照)。
つぎの例では、ポイントは始めは行頭にある。 そして
(search-forward "fox")
は‘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
を返す。 (この場合にもポイントの新たな値を返すほうが一貫性があるが、 値nil
に依存しているプログラムがある。)repeatを指定してあると(正の数であること)、 その回数だけ探索を繰り返す(一致箇所の末尾を新たな探索の開始位置とする)。 連続してこれらの探索に成功すると関数は成功し、 ポイントを移動してその新たな値を返す。 さもなければ探索は失敗である。
この関数は、ポイントから後方へ向けてstringを探索する。
search-forward
と同様であるが、後方へ向けて探索し 一致箇所の先頭にポイントを置く点が異なる。
この関数は、ポイントから前方へ向けてstringに一致する『単語』を探索する。 一致をみつけると、一致箇所の末尾にポイントを設定し ポイントの新たな値を返す。
単語の一致では、stringを単語の列とみなし、 それらを区切る句読点は無視する。 バッファ内の同じ単語の列を探す。 バッファ内の各単語は別々になっている必要があるが (単語‘ball’を探索すると単語‘balls’には一致しない)、 句読点や空白の詳細は無視される (‘ball boy’を探索すると‘ball. Boy!’に一致する)。
つぎの例では、ポイントは始めはバッファの先頭にある。 探索するとポイントは‘y’と‘!’のあいだに移動する。
---------- Buffer: foo ---------- -!-He said "Please! Find the ball boy!" ---------- Buffer: foo ---------- (word-search-forward "Please find the ball, boy.") 35 ---------- Buffer: foo ---------- He said "Please! Find the ball boy-!-!" ---------- Buffer: foo ----------limitが
nil
以外(カレントバッファ内の位置)であると、 それは探索の上限を指定する。 みつかった一致箇所はその位置を越えてはならない。noerrorが
nil
であると、 探索に失敗するとエラーword-search-failed
を通知する。 noerrorがt
であると、 エラーを通知するかわりにnil
を返す。 noerrorがnil
でもt
でもないと、 ポイントをlimit(あるいはバッファの末尾)へ移動してnil
を返す。repeatが
nil
以外であると、 その回数だけ探索を繰り返す。 ポイントは最後の一致箇所の末尾へ置かれる。