строка соответствия в elisp не возвращает строку, совпадающую со строкой соответствия - PullRequest
4 голосов
/ 02 марта 2011

У меня проблема с тем, что мне не удается получить строку соответствия после совпадения строки. Я думаю, что совпадение строк работает, по крайней мере, оно возвращает не ноль, но я получаю ошибку, когда пытаюсь получить строку совпадения. Как мне это сделать?

Сбой функции:

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

Ответы [ 2 ]

9 голосов
/ 02 марта 2011

Из строки совпадения Ch f я предлагаю прочитать нижнюю строку:

(строка совпадения NUM & необязательная STRING)

Возвращение строки текста, сопоставленной последним поиском,NUM указывает, какое выражение в скобках в последнем регулярном выражении.Значение равно nil, если пара NUMth не совпадает или их было меньше, чем NUM.Ноль означает весь текст, соответствующий всему регулярному выражению или всей строке. STRING следует указывать, если последний поиск выполнялся с помощью `string-match 'в STRING.

1 голос
/ 02 марта 2011
(defun small-test ()
  (setq matched (string-match"\\([0-9]+\\)-v\\([0-9]+\\).txt" "2011-v9.txt"))
  (message (match-string 1 "2011-v9.txt"))
  )

это должно работать

...