The zsh/regex
module makes available the following test condition:
-regex-match
regexMatches a string against a POSIX extended regular expression.
On successful match,
matched portion of the string will normally be placed in the MATCH
variable. If there are any capturing parentheses within the regex, then
the match
array variable will contain those.
If the match is not successful, then the variables will not be altered.
For example,
[[ alphabetical -regex-match ^a([^a]+)a([^a]+)a ]] && print -l $MATCH X $match
If the option REMATCH_PCRE
is not set, then the =~
operator will
automatically load this module as needed and will invoke the
-regex-match
operator.
If BASH_REMATCH
is set, then the array BASH_REMATCH
will be set
instead of MATCH
and match
.
Note that the zsh/regex
module logic relies on the host system. The
same expr and regex pair could produce different results on different
platforms if a regex with non-standard syntax is given.
For example, no syntax for matching a word boundary is defined in the POSIX
extended regular expression standard. GNU libc
and BSD libc
both provide
such syntaxes as extensions (\b
and [[:<:]]
/[[:>:]]
respectively),
but neither of these syntaxes is supported by both of these implementations.
Refer to the regcomp(3) and re_format(7) manual pages on your system for locally-supported syntax.