Я искал везде в документации шепелявости emacs для как к поиску регулярных выражений в строку. Все, что я нахожу, - то, как сделать это в буферах.
Есть ли что-то, что я пропускаю? Я должен просто плюнуть своей строкой во временный буфер и искать ее там? Это - просто стиль кодирования elisp, что-то, к чему я привыкну? Есть ли стандартное решение этой проблемы. Управление буферами кажется cludgy, когда я должен просто смочь искать прямо в переменную, уже представляют.
Вот обсуждение содержимого строки по сравнению с содержимым буфера в Emacs wiki. Просто храните вашу строку как переменную.
Сложность строк в том, что вы обычно не изменяете саму строку (за исключением случаев, когда вы выполняете функции массива над строкой, поскольку строка - это массив, но этого следует избегать), а возвращаете измененную строку.
Во всяком случае, вот пример использования строки в elisp.
Это обрезает пробелы в конце строки:
(setq test-str "abcdefg ")
(when (string-match "[ \t]*$" test-str)
(message (concat "[" (replace-match "" nil nil test-str) "]")))
Функция, которую вы ищете - string-match
. Если вам нужно выполнять поиск неоднократно, используйте индекс, который она возвращает, в качестве необязательного параметра "start" для следующего вызова. Документация находится в руководстве по ELisp, глава "Поиск по регулярным выражениям".