Bash グループマッチ

Bash グループマッチ

私はbash 3.1.17(1)リリースと以下のスクリプトを使用しています。入力のグループ一致(例: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正規表現に(global)を追加すると、およびを処理できること4fwk2_devを願っています2fwk5_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 です。

関連情報