Search code examples
regexbashcygwingrep

Regex to get delimited content with egrep


I would like to get the parameter (without parantheses) of a function call with a regular expression.

I am using egrep in a bash script with cygwin.

This is what I got so far (with parantheses):

$ echo "require(catch.me)" | egrep -o '\((.*?)\)'
(catch.me)

What would be the right regex here?


Solution

  • http://www.greenend.org.uk/rjk/2002/06/regexp.html

    What are you looking for - is a lookbehind and lookahead regular expressions.

    Egrep cannot do that. grep with perl support can do that.

    from man grep:

     -P, --perl-regexp
              Interpret PATTERN as a Perl regular expression.  This is highly experimental and grep -P may warn of unimplemented features.
    

    So

    $> echo "require(catch.me)" | grep -o -P '(?<=\().*?(?=\))'
    catch.me