]] && echo match
matched
其实基于上面的表达式不仅可以判断是否匹配正则表达,还可以通过上面表达式创建的变量 BASH_REGEX(数组)提取捕获组(catch group),...]_]+)*) ]] \
&& echo ${BASH_REMATCH[1]} ${BASH_REMATCH[2]}
http www.baidu.com
{BASH_REMATCH[0]} 即正则表达式的捕获组...0(全部字符串) {BASH_REMATCH[1]} 即正则表达式的捕获组1,以此类推
BASH_REGEX 是 bash定义的保存正则表达式捕获组的变量,不同的脚本解释有不同的定义,比如zsh,ksh...就有另外的变量定义方式
ksh
保存正则表达匹配数据的数组变量名叫 .sh.match ,对BASH_REMATCH,引用时必须以${.sh.match}方式引用
{.sh.match[0]} 即正则表达式的捕获组...0(全部字符串) {.sh.match[1]} 即正则表达式的捕获组1,以此类推
zsh
MATCH 保存匹配的整个字符串,对应就是bash的BASH_REMATCH[0] match保存捕获组数据的数组