12.2 re-search-forward 函数

re-search-forward 函数与 search-forward 函数非常相似。(See search-forward 函数.)

re-search-forward 用于搜索正则表达式。如果搜索成功,它将把光标立即放在目标的最后一个字符之后。如果是反向搜索,它将把光标放在目标的第一个字符之前。您可以告诉 re-search-forward 在搜索成功时返回 t。 (移动光标因此是一个副作用。)

search-forward 一样,re-search-forward 函数接受四个参数:

  1. 第一个参数是要搜索的正则表达式。正则表达式将是双引号之间的字符串。
  2. 可选的第二个参数限制函数搜索的范围;它是一个界限,指定为缓冲区中的位置。
  3. 可选的第三个参数指定函数对失败的响应方式:当搜索失败时,第三个参数为 nil 会导致函数发出错误信号(并打印一条消息);任何其他值会导致在搜索失败时返回 nil,在搜索成功时返回 t
  4. 可选的第四个参数是重复计数。负重复计数会导致 re-search-forward 进行向后搜索。

re-search-forward 的模板如下:

(re-search-forward "正则表达式"
                搜索限制
                失败时的操作
                重复计数)

第二、第三和第四个参数是可选的。但是,如果您想向最后两个参数之一或两者都传递一个值,您还必须向所有前面的参数传递一个值。否则,Lisp 解释器将混淆您正在传递值的参数。

forward-sentence 函数中,正则表达式将是变量 sentence-end 的值。简单形式如下:

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

搜索的限制将是段落的末尾(因为句子不能超过段落)。如果搜索失败,函数将返回 nil;而重复计数将由 forward-sentence 函数的参数提供。