1

在 bash 脚本中,我有:

mkv="xxxx E05 xxxx"

if [[ $mkv =~ E[0-9]{2} ]] ; then echo FOUND; fi

好的。这告诉我 $mkv 是否与 E[0-9]{2} 匹配,但这不是我想要的。

我想得到匹配的字符串(即我的例子中的 05 )

我在我的正则表达式中放了一个引用 (),希望以后能得到它,但我做不到。

我试过 :

if [[ $mkv =~ E([0-9]{2}) ]] ; then echo FOUND $1; fi

if [[ $mkv =~ E([0-9]{2}) ]] ; then echo FOUND \1; fi

等等......但他们都失败了

谢谢 !

4

1 回答 1

2

您可以使用BASH_REMATCH数组来获取匹配的部分:

if [[ $mkv =~ E([0-9]{2}) ]] ; then echo FOUND ${BASH_REMATCH[1]} ; fi

${BASH_REMATCH[0]}将包含整个/完整匹配 ( Exx),${BASH_REMATCH[1]}第一个捕获的组(这里只有数字)。

于 2013-01-01T11:51:18.437 回答