PyWart: Python regular expression syntax is not intuitive.
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Wed Jan 25 20:54:54 EST 2012
On Wed, 25 Jan 2012 09:16:01 -0800, Rick Johnson wrote:
> In particular i find the "extension notation" syntax to be woefully
> inadequate. You should be able to infer the action of the extension
> syntax intuitively, simply from looking at its signature. I find myself
> continually needing to consult the docs because of the lacking or
> misleading style of the current syntax. Consider:
The only intuitive interface is the nipple. Everything else is learned.
Nevertheless, there are legitimate problems with Python's regex syntax.
It is based on Perl's syntax, and even Larry Wall agrees that it has some
serious problems.
Read Apocalypse 5: Wall gives a fantastic explanation of what's wrong
with current regex syntax (without such trivial platitudes as "it is not
intuitive", as if we can all agree on what it intuitive), why it has
become that way, and what Perl 6 will do about it.
http://www.perl.com/pub/2002/06/04/apo5.html
Regexes are essentially a programming language. They may or may not be
Turing complete, depending on the implementation (true regexes are not,
but Perl regexes are more powerful than true regexes), but they are still
a programming language. And users want regexes to be concise, otherwise
they would ask for richer string search methods and avoid regexes
altogether.
The problem is that conciseness and readability are usually (but not
always) in opposition. So regexes will never be as readable as Python
code, because the requirements of regexes -- that they be short, concise,
and usually written as one-liners (or at least one-liners must be
possible) -- do not meet Python standards of readability. How can they?
Regexes are shorthand. If you want longhand, write your search in
straight Python.
> PS: In my eyes, Python 3000 is already a dinosaur.
We look forward to seeing your re-write. I'm sure all right-thinking
programmers will flock to your Python fork as soon as you start writing
it.
--
Steven
More information about the Python-list
mailing list