if [[ $PWD =~ '^(/cygdrive/[abd-z])(.*)' ]]; then
head=$match[1]
tail=$match[2]
fi
Same with globs:
set -o extendedglob
if [[ $PWD = (#b)(/cygdrive/[abd-z])(*) ]]; then
head=$match[1]
tail=$match[2]
fi
As globs também têm a vantagem de usar a própria correspondência de padrão de zsh , em que d-z corresponde apenas a defghijklmnopqrstuvwxyz , enquanto =~ usaria as regexps do seu sistema, em que [d-z] pode corresponder muito mais (como é ou até mesmo sequências de caracteres como dzs em locais húngaros). Fazer um set -o rematchpcre faria com que =~ usasse o PCRE, o que é mais razoável a esse respeito.
Para não coincidir em /cygdrive/foo :
if [[ $PWD =~ '^(/cygdrive/[abd-z])(/.*)?$' ]]; then
head=$match[1]
tail=$match[2]
fi
Com globs:
set -o extendedglob
if [[ $PWD = (#b)(/cygdrive/[abd-z])(/*|) ]]; then
head=$match[1]
tail=$match[2]
fi