Yve*_*ves 6 python regex bash split
我有这样一个字符串:
msg='123abc456def'
Run Code Online (Sandbox Code Playgroud)
现在我需要拆分msg并得到如下结果:
['123', 'abc', '456', 'def']
Run Code Online (Sandbox Code Playgroud)
在Python中,我可以这样做:
pattern = re.compile(r'(\d+)')
res = pattern.split(msg)[1:]
Run Code Online (Sandbox Code Playgroud)
如何在 bash 脚本中获得相同的结果?
我已经尝试过这样的但它不起作用:
IFS='[0-9]' # how to define IFS with regex?
echo ${msg[@]}
Run Code Online (Sandbox Code Playgroud)
使用 获取子字符串grep,并使用命令替换将输出放入数组中:
$ msg='123abc456def'
$ out=( $(grep -Eo '[[:digit:]]+|[^[:digit:]]+' <<<"$msg") )
$ echo "${out[0]}"
123
$ echo "${out[1]}"
abc
$ echo "${out[@]}"
123 abc 456 def
Run Code Online (Sandbox Code Playgroud)
[[:digit:]]+|[^[:digit:]]+匹配一个或多个数字 ( [[:digit:]]+) 或 ( |) 一个或多个非数字 ( [^[:digit:]]+.