lastIndexOf在elisp中使用正则表达式

时间:2015-01-17 04:48:10

标签: elisp emacs24

(last-index-of needle str &opt case-sens)

为前,

(last-index-of "car" "carbikecar'")

必须返回

7

如何在elisp中做到这一点?

1 个答案:

答案 0 :(得分:1)

要完成此操作,您可以在循环中使用string-match重复搜索输入字符串,返回找到的任何最后一个匹配项的索引:

(defun last-index-of (regex str &optional ignore-case)
  (let ((start 0)
        (case-fold-search ignore-case)
        idx)
    (while (string-match regex str start)
      (setq idx (match-beginning 0))
      (setq start (match-end 0)))
    idx))

试试你的例子:

(last-index-of "car" "carbikecar'")
7

此搜索忽略大小写:

(last-index-of "ar" "carbikecaR" t)
8

两个正则表达式搜索,第一个忽略大小写:

(last-index-of "arb?" "carbikecaR" t)
8
(last-index-of "arb?" "carbikecaR")
1