("%s\\|%s" rit lft)
не является допустимым выражением Lisp: когда оно вычисляется, Emacs будет жаловаться, что "%s\\|%s"
не является функцией.Вы, вероятно, хотите сделать
(format "%s\\|%s" rit lft)
, и было бы лучше использовать regexp-quote
, если ваши строки содержат специальные символы регулярного выражения:
(format "%s\\|%s"
(regexp-quote rit)
(regexp-quote lft))
В качестве альтернативы, вы также можете использовать *Функция 1010 *, которая создает эффективное регулярное выражение для сопоставления любой из списка строк:
(regexp-opt (list rit lft))
\\&
представляет только совпадающую строку в аргументе замены для replace-regexp
, replace-match
и аналогичныхфункции.В другом коде на Лиспе вам нужно использовать (match-string 0)
.
Наконец, если вы хотите, чтобы это работало только в регионе, вам, вероятно, следует указать (region-end)
в качестве второго аргумента для search-forward-regexp
.