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