【问题标题】:match-string in elisp not returning string matched by string-matchelisp中的匹配字符串不返回与字符串匹配匹配的字符串
【发布时间】:2011-03-02 09:14:55
【问题描述】:

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

失败的函数:

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

【问题讨论】:

    标签: regex elisp


    【解决方案1】:

    从 C-h f 匹配字符串,我建议你阅读底线:

    (匹配字符串 NUM &optional STRING)

    返回最后匹配的文本字符串 搜索。 NUM 指定哪个 最后的括号表达式 正则表达式。如果第 NUM 对,则值为 nil 不匹配,或少于 NUM 对。零表示整个文本 由整个正则表达式或整体匹配 细绳。 如果最后一次搜索是通过 `string-match' on 字符串。

    【讨论】:

    • 谢谢,我以为我读得很透彻,显然我没有。
    【解决方案2】:
    (defun small-test ()
      (setq matched (string-match"\\([0-9]+\\)-v\\([0-9]+\\).txt" "2011-v9.txt"))
      (message (match-string 1 "2011-v9.txt"))
      )
    

    应该可以的

    【讨论】:

    • 这真的没有任何意义。为什么分配matched
    猜你喜欢
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    相关资源
    最近更新 更多