Если в строке содержится не более одной ссылки и вы не возражаете против какого-то очень уродливого взлома регулярных выражений, запустите следующий код в буфере:
(defun getlinks ()
(beginning-of-buffer)
(replace-regexp "^.*<a href=\"\\([^\"]+\\)\"[^>]+>\\([^<]+\\)</a>.*$" "LINK:\\1|\\2")
(beginning-of-buffer)
(replace-regexp "^\\([^L]\\|\\(L[^I]\\)\\|\\(LI[^N]\\)\\|\\(LIN[^K]\\)\\).*$" "")
(beginning-of-buffer)
(replace-regexp "
+" "
")
(beginning-of-buffer)
(replace-regexp "^LINK:\\(.*\\)$" "\\1")
)
Он заменяет все ссылки на LINK: url | description, удаляет все строки, содержащие что-либо еще, удаляет пустые строки и, наконец, удаляет «LINK:».
Подробный HOWTO: (1) Исправьте ошибку в вашем html-файле примера, заменив <href
на <a href
, (2) скопируйте вышеупомянутую функцию в царапину Emacs, (3) нажмите Cx Ce после последнего ")" чтобы загрузить функцию, (4) загрузите ваш пример HTML-файла, (5) выполните функцию с помощью M-: (getlinks)
.
Обратите внимание, что разрывы строк в третьем replace-regexp важны. Не отступайте от этих двух строк.