我遇到一个问题,我在字符串匹配后无法获得匹配字符串。我认为字符串匹配有效,至少它返回非零,但是当我尝试获取匹配字符串时出现错误。我该怎么办?
失败的功能:
(defun small-test ()
(string-match "\\([0-9]+\\)-v\\([0-9]+\\).txt" "2011-v9.txt")
(message (match-string 1))
)
答案 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"))
)
应该有效