正则表达式搜索

函数 re-search-forward 用于搜索句子的结尾,即由 sentence-end 正则表达式定义的模式。如果找到模式——也就是找到了句子的结尾——那么 re-search-forward 函数会执行两个操作:

  1. re-search-forward 函数执行一个副作用,即将点移动到找到的出现的结尾。
  2. re-search-forward 函数返回 true 的值。这是由 if 接收的值,并表示搜索成功。

副作用,即点的移动,在 if 函数接收到搜索成功的返回值之前完成。

if 函数从成功调用 re-search-forward 接收到 true 的值时,if 会评估 then 部分,即表达式 (skip-chars-backward " \t\n")。这个表达式向后移动任何空格、制表符或回车,直到找到一个打印字符,然后将点留在字符之后。由于点已经被移动到标记句子结尾的模式的末尾,这个操作将点留在句子的结束字符后,通常是一个句点。

另一方面,如果 re-search-forward 函数未能找到标记句子结束的模式,则该函数返回 false。然后 false 导致 if 评估其第三个参数,即 (goto-char par-end):将点移动到段落的末尾。

(如果文本处于表单或等效状态,且点可能无法完全移动,则会调用 constrain-to-field 函数。)

正则表达式搜索非常有用,而由 re-search-forward 展示的模式,其中搜索是 if 表达式的测试,非常方便。你会经常看到或编写包含这个模式的代码。