12.2 re-search-forward 函数

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

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 "regular-expression"
                limit-of-search
                what-to-do-if-search-fails
                repeat-count)

第二、第三、第四个参数为可选。但如果你需要为后两个参数中的一个或两个传值,必须同时为前面所有参数传值。否则 Lisp 解释器会混淆参数对应关系。

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

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

搜索边界为段落结尾(因为句子不会跨段落)。搜索失败时函数返回 nil;重复次数由 forward-sentence 函数的参数提供。