lastIndexOf 在 elisp 中使用正则表达式

lastIndexOf using regex in elisp

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

例如,

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

必须return

7

如何在 elisp 中做到这一点?

为此,您可以在循环中使用 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