Extended pattern matching

shopt -s extglob
?(pattern-list) Matches zero or one occurrence of the given patterns
*(pattern-list) Matches zero or more occurrences of the given patterns
+(pattern-list) Matches one or more occurrences of the given patterns
@(pattern-list) Matches one of the given patterns
!(pattern-list) Matches anything except one of the given patterns
The patters can be any of the regular patterns so +([:digit:]) matches one or more digits.

Configuring Pattern Matching: There are shell options that allow control over how the shell matches patterns and how it reacts to failed patterns.

dotglob If set, bash includes filenames beginning with a ‘.’ in the results of pathname expansion.
extglob If set, the extended pattern matching features described above under Pathname Expansion are enabled.
failglob f set, patterns which fail to match filenames during pathname expansion result in an expansion error.
globstar If set, the pattern ** used in a filename expansion context will match a files and zero or more directories and subdirectories. If the pattern is followed by a /, only directories and subdirectories match.