XYZ*_*nux 3 regex string bash shell
我有一个变量
string="ABC400p2q4".
Run Code Online (Sandbox Code Playgroud)
我怎么能分开ABC400和p2q4.我需要将它分成两个变量,以便得到结果
echo $var1
ABC400
echo $var2
p2q4
Run Code Online (Sandbox Code Playgroud)
代替ABC,可以有任何字母字符; 代替400,可以有任何其他数字; 但是p并且q是固定的,代替2和4,也可以有任何数字.
无需基于正则表达式模式进行拆分,因为它们是固定长度的子串.纯粹bash你会做:
$ string="ABC400p2q4"
$ var1=${string:0:6}
$ var2=${string:6}
$ echo $var1
ABC400
$ echo $var2
p2q4
Run Code Online (Sandbox Code Playgroud)
使用bash和特殊BASH_REMATCH数组(非固定长度):
$ string='ABC400p2q4'
$ [[ $string =~ ^([a-zA-Z]+[0-9]+)(.*) ]]
$ echo ${BASH_REMATCH[1]}
ABC400
$ echo ${BASH_REMATCH[2]}
p2q4
Run Code Online (Sandbox Code Playgroud)