Bash 组匹配

Bash 组匹配

我正在使用 bash 3.1.17(1)-release 和下面的脚本。它不显示输入的组匹配,即 4fwk2_dev 2fwk5_dev

echo $FWK
FWK_REGEX="/(\d{1,3})fwk(\d)_dev/"
if [[ $FWK =~ $FW_REGEX ]]; then
   echo ${BASH_REMATCH[0]}
fi

输出

4fwk2_dev 2fwk5_dev

我希望它能匹配 4,如果我添加 的话,也能匹配 2 echo ${BASH_REMATCH[1]}。如果我将g(全局)添加到正则表达式,那么希望它能够处理4fwk2_dev2fwk5_dev

答案1

这似乎有效:

echo $FWK
FWK_REGEX="([0-9]{1,3})fwk([0-9])_dev"
if [[ $FWK =~ $FWK_REGEX ]]; then
   echo ${BASH_REMATCH[0]}
fi

我已经替换了正则表达式并更正了变量名称中的拼写错误。

不过,我有 Bash 4.3.42(1),所以 YMMV。

相关内容