[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
why emacs lisp's regex has 2-steps escapes?
From: |
Xah |
Subject: |
why emacs lisp's regex has 2-steps escapes? |
Date: |
Wed, 9 Jul 2008 03:30:27 -0700 (PDT) |
User-agent: |
G2/1.0 |
emacs regex has a odd pecularity in that it needs a lot backslashes.
More specifically, a string first needs to be properly escaped, then
this passed to the regex engine.
For example, suppose you have this text “Sin[x] + Sin[y]” and you need
to capture the x or y.
In emacs i need to use
“\\(\\[[a-z]\\]\\)”
for the actual regex
“\(\[[a-z]\]\)”.
Here's somewhat typical but long regex for matching a html image tag
(search-forward-regexp "<img +src=\"\\([^\"]+\\)\" +alt=\"\\([^\"]+\\)?
\" +width=\"\\([0-9]+\\)\" +height=\"\\([0-9]+\\)\" ?>" nil t)
The toothpick syndrom gets crazy making already difficult regex syntax
impossible to read and hard to code.
My question is, why is elisp's regex has this 2-steps process? Is this
some design decision or just happened that way historically?
Second question: can't elisp create some like “regex-string” wrapper
function that automatically takes care of the quoting? I can't see how
this migth be difficult?
Thanks.
Xah
∑ http://xahlee.org/
☄
- why emacs lisp's regex has 2-steps escapes?,
Xah <=