in reply to differnce between egrep and perl regex ?

The most important incompatibility between egrep regexps and perl regexps it the braces.

GNU egrep uses \{N,K\} for repetitions, while GNU grep -E and perl uses {N,K}. This might be different in other versions of grep. (Update: nevyn is right, both perl and egrep uses {N,K}.)

Also, backslashes are ordinary characters inside a bracketed character set, but are special in perl, so you must escape backslashes inside brackets when converting from egrep to perl.

Update: also note that egrep is a DFA matcher (unless you use backreferences) so some regexps might have to be changed to work with perl (which is a NFA), especially some regexps that contain repetitions embedded in each other.

Update: from perl 5.10.0 you can replace the regex engine with any other, including a posix one. The modules re::engine::TRE and re::engine::POSIX does this. You may need to use the x flag to get the egrep syntax instead of the grep syntax.

Replies are listed 'Best First'.
Re^2: differnce between egrep and perl regex ?
by nevyn (Monk) on Oct 12, 2004 at 22:14 UTC

    GNU egrep uses \{N,K\} for repetitions, while GNU grep -E and perl uses {N,K}.

    GNU egrep and grep -E use the same setup code for the grep core. So I don't see how they can be different.

    --
    James Antill