The function does work with the expression, the mistake was poor tracking of the position of the point. Below code
(defun otmKvhk() "Отметка выражений в кавычках Обрабатывается выделенный регион Отмечается только крайние кавычки, вложения пропускаются, начало соответствия 'bbo# ', конец ' #obb'" (interactive) (let ((n_pozRgn (region-beginning)) (z_pozRgn (region-end)) n_svpd k_svpd) (goto-char n_pozRgn) (while (setq n_svpd (re-search-forward "\"\\|`" z_pozRgn t)) (let ((data (match-data))) (unwind-protect (if (setq k_svpd (search-forward (match-string-no-properties 0) z_pozRgn t)) (progn (insert " #obb") (setq k_svpd (+ 5 k_svpd)) (setq n_svpd (- n_svpd 1)) (goto-char n_svpd) (insert "bbo# ") (setq k_svpd (+ 5 k_svpd)) (goto-char k_svpd) (setq z_pozRgn (+ 10 z_pozRgn))) (error "%s" "Не найдено соответствие!") ) (set-match-data data))) ) (goto-char z_pozRgn)) )
"or`), so your problem isn't what you think it is. What is your problem?