07. Extended Regular Expressions

Up until now we have covered all the characters used under basic regular expressions (BRE). Here, we'll go over extended regular expressions (ERE), which can be used with grep's -E option.

Similarities and Differences

Here is a list of similarities and differences between ERE's and BRE's:

  • In ERE's there are no backreferences, although the parentheses have special meanings.
  • Same notation for matching single characters
  • No need for escape keys when uses braces ({n, m} or parentheses.

Parentheses

Rather than symbols for backreferences, parentheses in ERE are used for groupings. This allows you to specify groups of text as regular expressions, which is helpful for metacharacters to reference a group of previous regex.

For example, (toy)* would select the letters toy zero or many times.

Extended features

There are three extended metacharacters that ERE offers.

Question mark (?)

The ? matches zero or one of the preceding regex.

Plus sign (+)

The plus symbol (+) is used to match one or more of the preceding regex. It's very similar to the asterisk (*), but allows for no NUL values.

$ ls /usr/bin | grep -E '[[:alpha:]][[:digit:]]+[[:alpha:]]'
enc2xs5.16
enc2xs5.18
eqn2graph
find2perl
find2perl5.16
find2perl5.18
grap2graph
h2ph
h2ph5.16
h2ph5.18
h2xs
h2xs5.16
h2xs5.18
hdxml2manxml
headerdoc2html
ip2cc

This would select all text with a letter, followed by one or more digits, then another letter. We could have gotten the same result with [[:alpha:]][[:digit:]][[:digit:]]*[[:alpha:]] but the previous example looks must cleaner.

Alternations (|)

Alternations give you the flexibility of choosing between two or more regex expressions.

$ ls /usr/bin/ | grep -E 'zip|pod|enc'
bunzip2 bzip2 bzip2recover enc2xs enc2xs5.16 enc2xs5.18 encode_keychange funzip gencat gunzip gzip latency pod2html pod2html5.16 podchecker5.18 podselect podselect5.16 podselect5.18 unzip unzipsfx uuencode weblatency.d zip zipcloak zipdetails zipdetails5.16 zipdetails5.18 zipgrep zipinfo zipnote zipsplit

Take your Linux skills to the next level!

How Linux Works

Take your Linux skills to the next level! Try Linux & UNIX

In this completely revised second edition of the perennial best seller How Linux Works, author Brian Ward makes the concepts behind Linux internals accessible to anyone curious about the inner workings of the operating system. Inside, you'll find the kind of knowledge that normally comes from years of experience doing things the hard way.

$ Check price
39.9539.95Amazon 5 logo(114+ reviews)

More Linux & UNIX resources

Aching back from coding all day?

Acupressure Mat & Pillow

Aching back from coding all day? Try Back Problems

Relieve your stress, back, neck and sciatic pain through 1,782 acupuncture points for immediate neck pain relief. Made for lower, upper and mid chronic back pain treatment, and improves circulation, sleep, digestion and quality of life.

$$ Check price
144.87144.87Amazon 4.5 logo(1,890+ reviews)

More Back Problems resources

Ad