elisp中的match-string没有返回字符串匹配的字符串

时间:2011-03-02 09:14:55

标签: regex elisp

我遇到一个问题,我在字符串匹配后无法获得匹配字符串。我认为字符串匹配有效,至少它返回非零,但是当我尝试获取匹配字符串时出现错误。我该怎么办?

失败的功能:

(defun small-test ()
  (string-match "\\([0-9]+\\)-v\\([0-9]+\\).txt" "2011-v9.txt")
  (message (match-string 1))
  )

2 个答案:

答案 0 :(得分:9)

从C-h f match-string,我建议您阅读底线:

  

(匹配字符串NUM和可选的STRING)

     

返回与last匹配的文本字符串   搜索。 NUM指定哪个   括号中的括号表达式   正则表达式。如果NUM对,则值为零   没有匹配,或者有不到   NUM对。零表示整个文本   与整个正则表达式或整体相匹配   串。   如果最后一次搜索是通过“string-match”打开,则应该给出STRING   STRING。

答案 1 :(得分:1)

(defun small-test ()
  (setq matched (string-match"\\([0-9]+\\)-v\\([0-9]+\\).txt" "2011-v9.txt"))
  (message (match-string 1 "2011-v9.txt"))
  )

应该有效