函数 re-search-forward
用于搜索句子的结尾,即由 sentence-end
正则表达式定义的模式。如果找到模式——也就是找到了句子的结尾——那么 re-search-forward
函数会执行两个操作:
re-search-forward
函数执行一个副作用,即将点移动到找到的出现的结尾。
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
表达式的测试,非常方便。你会经常看到或编写包含这个模式的代码。