Next: Character Classes and Bracket Expressions, Previous: BRE syntax, Up: sed regular expressions [Contents][Index]

The only difference between basic and extended regular expressions is in
the behavior of a few characters: ‘`?`

’, ‘`+`

’, parentheses,
braces (‘`{}`

’), and ‘`|`

’. While basic regular expressions
require these to be escaped if you want them to behave as special
characters, when using extended regular expressions you must escape
them if you want them *to match a literal character*. ‘`|`

’
is special here because ‘`\|`

’ is a GNU extension – standard
basic regular expressions do not provide its functionality.

Examples:

`abc?`

- becomes ‘
`abc\?`

’ when using extended regular expressions. It matches the literal string ‘`abc?`

’. `c\+`

- becomes ‘
`c+`

’ when using extended regular expressions. It matches one or more ‘`c`

’s. `a\{3,\}`

- becomes ‘
`a{3,}`

’ when using extended regular expressions. It matches three or more ‘`a`

’s. `\(abc\)\{2,3\}`

- becomes ‘
`(abc){2,3}`

’ when using extended regular expressions. It matches either ‘`abcabc`

’ or ‘`abcabcabc`

’. `\(abc*\)\1`

- becomes ‘
`(abc*)\1`

’ when using extended regular expressions. Backreferences must still be escaped when using extended regular expressions. `a\|b`

- becomes ‘
`a|b`

’ when using extended regular expressions. It matches ‘`a`

’ or ‘`b`

’.