我有一个版本字符串,例如
version=1.2.23b2
我想只有b2
的最后一部分,所以我尝试了这个:
${version##*[0-9]*.[0-9]*.[0-9]*}
我的想法是*
意味着没有或多次重复领先模式,但实际上它意味着任何角色没有或多次。所以我希望我的模式表达,这只是数字,一次或多次。
答案 0 :(得分:1)
*
匹配任何字符0次或更多次。
您可以在此处使用扩展的glob模式:
shopt -s extglob
echo "${version##+([0-9.])}"
b2
否则,你可以在这里使用正则表达式:
version='1.2.23b2'
re='^[0-9]+.[0-9]+.[0-9]+(.+)'
[[ $version =~ $re ]] && echo "${BASH_REMATCH[1]}"
b2
即使这个正则表达式应该在上面工作:
re='^[0-9.]+(.+)'