Я играл с emacs lisp, и я хотел написать небольшую функцию для поиска и замены регулярных выражений. У меня было чертовски время, чтобы регулярное выражение работало правильно, потому что я не понимал, что все специальные символы должны быть дважды экранированы при написании кода lisp (но не при использовании запроса-замены-regexp в интерактивном режиме!).
Так, например, используя интерактивный запрос query-replace-regexp, вы можете использовать
^\(.*\)[\t]-.*$
но при написании кода elisp вам нужно удвоить escape все так:
^\\(.*\\)[\t]-.*$
Наконец-то я нашел ссылку на статью в статье Steve Yegge но мне было интересно, знает ли кто-нибудь, почему это?