elisp正则expression式searchstring,而不是缓冲区

在emacs lisp文档中,我一直在寻找正则expression式如何searchstring。 我find的是如何在缓冲区中做到这一点。

有什么我失踪? 我应该把我的string吐在一个临时缓冲区中并在那里search它? 这只是elisp的编码风格,我会习惯吗? 有没有一个标准的解决这个问题。 当我只能直接search已经存在的variables时,操纵缓冲区看起来很有用。

以下是Emacs wiki中string内容与缓冲区内容的讨论。 只需将您的string存储为一个variables。

关于string的棘手的事情是你通常不修改string本身(除非你在string上执行数组函数,因为string是一个数组,但通常应该避免),但是你返回修改的string。

无论如何,这里是在elisp中使用string的一个例子。

这将修剪string末尾的空格:

(setq test-str "abcdefg ") (when (string-match "[ \t]*$" test-str) (message (concat "[" (replace-match "" nil nil test-str) "]"))) 

你正在寻找的function是string-match 。 如果您需要重复进行匹配,请使用返回的索引作为下一次调用的可选“开始”参数。 该文档位于ELisp手册的“正则expression式search”一章中。

要replacestring中的每个正则expression式匹配,请查看replace-regexp-in-string

searchstring的开头

 (defun string-starts-with-p (string prefix) "Return t if STRING starts with PREFIX." (and (string-match (rx-to-string `(: bos ,prefix) t) string) t)) 

searchstring的结尾

 (defun string-ends-with-p (string suffix) "Return t if STRING ends with SUFFIX." (and (string-match (rx-to-string `(: ,suffix eos) t) string) t))