I've been playing around with emacs lisp, and I wanted to write a little function to do a regular expression search and replace. I had a heck of a time getting the regular expression to work correctly because I didn't realize that all the special characters need to be double escaped when writing lisp code (but not when using query-replace-regexp interactively!).
So for example, using query-replace-regexp interactively you can use
^\(.*\)[\t]-.*$
but when writing elisp code you need to double escape everything like so:
^\\(.*\\)[\t]-.*$
I finally found a reference to this in a Steve Yegge article, but I was wondering if anyone knew why this is?