Combine apenas 2
e capture tudo além de .*
:
[[ $string =~ 2(.*) ]] && echo "${BASH_REMATCH[1]}"
Exemplo:
$ string="ananas1kiwi2apple1banana2tree"
$ [[ $string =~ 2(.*) ]] && echo "${BASH_REMATCH[1]}"
apple1banana2tree
Qual é o problema com o seu:
-
.*
é ganancioso, corresponde à última2
quando você usa.*2
, para não ter ganância (como.*?
não está disponível em ERE) use[^2]*2
-
Também
{1,}
é apenas+
Então faça:
[[ $string =~ [^2]*2([[:alnum:]]+) ]]
Em qualquer caso, não é necessário fazer a correspondência desde o início, apenas faça:
[[ $string =~ 2([[:alnum:]]+) ]]