【发布时间】:2011-03-02 09:14:55
【问题描述】:
我有一个问题,在字符串匹配后我无法获得匹配字符串。我认为字符串匹配有效,至少它返回非零,但是当我尝试获取匹配字符串时出现错误。我该怎么做?
失败的函数:
(defun small-test ()
(string-match "\\([0-9]+\\)-v\\([0-9]+\\).txt" "2011-v9.txt")
(message (match-string 1))
)
【问题讨论】:
我有一个问题,在字符串匹配后我无法获得匹配字符串。我认为字符串匹配有效,至少它返回非零,但是当我尝试获取匹配字符串时出现错误。我该怎么做?
失败的函数:
(defun small-test ()
(string-match "\\([0-9]+\\)-v\\([0-9]+\\).txt" "2011-v9.txt")
(message (match-string 1))
)
【问题讨论】:
从 C-h f 匹配字符串,我建议你阅读底线:
(匹配字符串 NUM &optional STRING)
返回最后匹配的文本字符串 搜索。 NUM 指定哪个 最后的括号表达式 正则表达式。如果第 NUM 对,则值为 nil 不匹配,或少于 NUM 对。零表示整个文本 由整个正则表达式或整体匹配 细绳。 如果最后一次搜索是通过 `string-match' on 字符串。
【讨论】:
(defun small-test ()
(setq matched (string-match"\\([0-9]+\\)-v\\([0-9]+\\).txt" "2011-v9.txt"))
(message (match-string 1 "2011-v9.txt"))
)
应该可以的
【讨论】:
matched?