sed: BRE vs ERE

 
 5.2 Basic (BRE) and extended (ERE) regular expression
 =====================================================
 
 Basic and extended regular expressions are two variations on the syntax
 of the specified pattern.  Basic Regular Expression (BRE) is the default
 in 'sed' (and similarly in 'grep').  Extended Regular Expression syntax
 (ERE) is activated by using the '-r' or '-E' options (and similarly,
 'grep -E').
 
    In GNU 'sed' the only difference between basic and extended regular
 expressions is in the behavior of a few special characters: '?', '+',
 parentheses, braces ('{}'), and '|'.
 
    With basic (BRE) syntax, these characters do not have special meaning
 unless prefixed backslash ('\'); While with extended (ERE) syntax it is
 reversed: these characters are special unless they are prefixed with
 backslash ('\').
 
 Desired pattern          Basic (BRE) Syntax       Extended (ERE) Syntax
                                                   
 ---------------------------------------------------------------------------
 literal '+' (plus             $ echo "a+b=c" | sed -n '/a+b/p'     $ echo "a+b=c" | sed -E -n '/a\+b/p'
 sign)                         a+b=c                    a+b=c
                                                   
 One or more 'a'               $ echo "aab" | sed -n '/a\+b/p'     $ echo "aab" | sed -E -n '/a+b/p'
 characters followed by        aab                      aab
 'b' (plus sign as                                 
 special
 meta-character)