Hacker News new | past | comments | ask | show | jobs | submit login

I'm not sure what kind of reference you want. Regular expressions are code. They're a DSL, and in some ways, the full Perl regex engine is disturbingly close to turing complete, even before you notice that the full Perl regex engine explicitly lets you embed arbitrary Perl code in a regex (PCRE does not permit this, obviously).

And it's not about complexity. This is not complex:

    while (1) {}
Yet it will hang your process.

This, pulled from Stroustrup's FAQ, is also not complex:

    void f();	/* argument types not mentioned */
    void g()
    {
        f(2);	/* poor style C. Not C++ */
    }
Yet it will work in C, but not C++.

The full expansion of PCRE's name is misleading. Don't let yourself be fooled by it. If it helps, think "Perl-like regular expressions" instead of "Perl-compatible".




To avoid you the trouble of writing a third introductory paragraph, I have done the automata theory course. I have also heard about halting problem. etc, etc :-)

Perl don't allow code execution blindly in regexps.

I have just had too much problems with simple stuff in PCRE.

My take away is to not use languages with PCRE for serious regexp work. Damn. I had hoped later versions were better.


> Perl don't allow code execution blindly in regexps.

Blindly? No. That e (or ee... ) at the end of your match will stare you in the face as if to ask, "What the hell were you thinking when you thought this was a good idea?"

(I say this and yet I love Perl.)


[Edit: I have only used /e when I really meant it. OK, sometime, I might have gotten that code from a config file... :-)]

An O/S or language can only have so many levels of security.

The same goes for using input strings for "/e" as when you explicitly write use re 'eval' and use input strings in regexps. Or use input strings as shell commands, for that matter...

(Am I being trolled? I get lots of beginner lectures and strange side issues of insignificant problems. Should I just stop criticizing PCRE? :-) )


Your "criticism" of PCRE doesn't sound like real criticism, it sounds like a confused and frustrated beginner, which is why you're getting beginner lectures.

PCRE is taking an extremely powerful and completely non-standard DSL out of the context of a parent language to which it is inextricably intertwined and reimplementing it for general-purpose use in other languages.

Between that, and the long history of outwardly-bizarre compatibility problems between different regex engines, even those that are supposed to be compatible, you should not have expected the level of compatibility you did.

PCRE's quality is essentially orthogonal to these issues.


>>PCRE's quality is essentially orthogonal to these issues.

That seems like... conscious misrepresentation.

If it was just compatibility, I'd learn the new syntax.

The problem is quality. Specifically, I found two relatively simple regexps that doesn't work. Already.

I guess I should try to avoid the PCRE lib for serious work, which is hard. :-(

Edit: I could have been just unlucky, but...

(I'm not going to start trading insults, if that is what you want.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: