Unix shells do not traditionally have regex support built-in. Bash and Zsh both do, so if you use the
=~ operator to compare a string to a regex, then:
You can get the substrings from the
$BASH_REMATCH array in bash.
In Zsh, if the
BASH_REMATCH shell option is set, the value is in the
$BASH_REMATCH array, else it's in the
$MATCH/$match tied pair of variables (one scalar, the other an array). If the
RE_MATCH_PCRE option is set, then the PCRE engine is used, else the system regexp libraries, for an extended regexp syntax match, as per bash.
So, most simply: if you're using bash:
if [[ "$variable" =~ unquoted.*regex ]]; then
If you're not using Bash or Zsh, it gets more complicated as you need to use external commands.