1

我有一个版本字符串,例如

version=1.2.23b2

我只想使用 的最后一部分b2,所以我尝试了这个:

${version##*[0-9]*.[0-9]*.[0-9]*} 

我的想法是这*意味着没有或多次重复引导模式,但实际上它意味着没有或多次重复任何字符。所以我希望我的模式能够表达,这只是关于数字,一次或多次。

4

1 回答 1

1

*in glob 模式匹配任何字符 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.]+(.+)'
于 2017-07-28T10:59:26.803 回答