2011-03-02 179 views
3

我有一个问题,我无法在字符串匹配后得到匹配字符串。我认为字符串匹配的作品,至少它返回非零,但我得到一个错误,当我尝试获取匹配字符串。我应该怎么做?elisp中的匹配字符串没有返回匹配字符串匹配的字符串

失败函数:

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

回答

8

由CH˚F匹配字符串,我建议你读的底线:

(匹配字符串NUM &可选的字符串)

返回最后一个 搜索匹配的文本字符串。 NUM指定在最后一个 正则表达式中加括号的表达式为 。如果NUM个对 不匹配,或者存在小于 个NUM对,则值为零。零表示整个文字 匹配整个正则表达式或整个 字符串。 如果上一次搜索是通过 STRING上的“字符串匹配”发出的,则应该给出STRING。

+0

谢谢,我想我读透,显然我没有。 – ygram 2011-03-02 09:33:09

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

应该工作

+0

这真的没有任何意义。为什么要分配“匹配”? – PascalVKooten 2016-01-17 00:27:30