在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
等...但是所有这些都失败了
谢谢!
答案 0 :(得分:2)
您可以使用BASH_REMATCH
数组来获取匹配的部分:
if [[ $mkv =~ E([0-9]{2}) ]] ; then echo FOUND ${BASH_REMATCH[1]} ; fi
${BASH_REMATCH[0]}
将包含完整匹配(Exx
),${BASH_REMATCH[1]}
第一个捕获的组(仅限此处的数字)。