Re: Regexps (was Re: Invalid Operating System)

[prev] [thread] [next] [lurker] [Date index for 2006/12/18]

From: demerphq
Subject: Re: Regexps (was Re: Invalid Operating System)
Date: 11:47 on 18 Dec 2006
On 12/18/06, Abigail <abigail@xxxxxxx.xx> wrote:
> On Sun, Dec 17, 2006 at 11:07:50PM -0800, Yoz Grahame wrote:
> > On 12/17/06, Robert Rothenberg <robrwo@xxxxx.xxx> wrote:
> > >
> > >Bad comparison: traditional regexps are much easier to read than the ones
> > >used in contemporary programming languages.
> >
> > PCRE-style regexp in Javascript:
> > regexp = /(\d{1,3}\.){3}\d{1,3}/;
> >
> > Traditional POSIX regexp in C:
> > char regexp[] = "\\([:digit:]\{1,3\}\\.\\)\\{3\\}[:digit:]\\{1,3\\}";
> >
> > The second one is clearly the more horrific of the two hateful messes,
> > but I'll give you that it's *way* more fun to type if you just can't
> > get enough joyful bouncing on the backslash key.
> > (And traditional POSIX holds an even deeper hate - backslashes EITHER
> > switch a character from being a literal to a metacharacter, OR from a
> > metacharacter to a literal, depending on the character in question.
> > Consistency's for suckers, clearly.)
>
>
> Well, so does Perl, and so your PCRE example. The latter backslashes
> the d, turning the literal d into a metacharacter, and it backslashes
> the ., turning the metacharacter . into the literal .

In Perl the rule is: If its an alpha-numeric char then escaping it
turns it into a meta pattern. If its non-alpha then escaping it turns
it into a literal. The latter rule is hard, and afaik applies to every
Perl. Hatefully tho perl will treat an unknown escape-alphanum
sequence as an unescaped char, not even warning.



-- 
perl -Mre=debug -e "/just|another|perl|hacker/"

Generated at 22:02 on 27 Dec 2006 by mariachi 0.52