Speaking as someone who has actually written and used (in Python) a more 
abstract regex library,
the biggest problem with regular expressions in most languages isn't the 
syntax, but rather
the inability to easily compose small REs into larger REs. Which is why 
so many programs end
up with huge, unreadable REs. As a small example, it's really nice (and 
obvious) to be able to say

    re3 = re1 + re2

instead of

    re3 = "(?:#{re1})(?:#{re2})"

And the advantages go well beyond the convenience illustrated in the 
above example...

Also, I think that people who are accustomed to regular expressions (or 
any other DSL) tend
to forget about the problems with that DSL; the need for newcomers to 
learn another syntax,
the inability to use standard language tools with the DSL, and so on.

So, though I've used REs for years, I certainly don't agree with the 
contention that "REs
are actually pretty good". RE syntax in RE languages is optimized for 
quickly entering onetime
REs on the command line, not for building robust REs that can be easily 
maintained by
other programmers. It's the difference between weird, Perl-style 
variables, and meaningful
variable names. A good abstract wrapper in Ruby would be very useful.

Ken

Yossef Mendelssohn wrote:
>
> I second (or third, or whatever) the contention that regular
> expressions are pretty readable on their own (given some knowledge of
> the syntax and good formatting).  The thing to keep in mind is that
> they're a language of their own.  Once you learn the language, you
> find you can use it in many a programming language (though there are
> some dialectical problems here and there).
>
> --
> -yossef
>
>
>
>