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))