python - 如何根据 bash 脚本中的正则表达式拆分字符串

标签 python regex bash split

我有这样一个字符串:

msg='123abc456def'

现在我需要拆分 msg 并得到如下结果:

['123', 'abc', '456', 'def']

在 python 中,我可以这样做:

pattern = re.compile(r'(\d+)')
res = pattern.split(msg)[1:]

如何在 bash 脚本中得到相同的结果?
我试过这样但它不起作用:

IFS='[0-9]'    # how to define IFS with regex?
echo ${msg[@]}

最佳答案

使用 grep 获取子字符串,并使用命令替换将输出放入数组中:

$ msg='123abc456def'

$ out=( $(grep -Eo '[[:digit:]]+|[^[:digit:]]+' <<<"$msg") )

$ echo "${out[0]}"
123

$ echo "${out[1]}"
abc

$ echo "${out[@]}"
123 abc 456 def
  • 正则表达式 (ERE) 模式 [[:digit:]]+|[^[:digit:]]+ 匹配一个或多个数字 ([[:digit:]] +) 或 (|) 一个或多个非数字 ([^[:digit:]]+.

关于python - 如何根据 bash 脚本中的正则表达式拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45025516/

相关文章:

Python - Pandas 数据框 - 生成包含组级信息的列

python - django.db.utils.OperationalError 无论我尝试什么

regex - 解析日志文件,检查日期,报告结果

linux - 为什么一旦父 bash 脚本死亡,来自 bash 的 eval 调用的 child 就会成为孤儿?

bash - 并行命令不会忽略配置文件

arrays - 使用 jq 为 JSON 数组运行计数器

python - 查看列中的值是否包含 Pandas 数据框中的 %

python - 使用 python subprocess.popen ..无法阻止 exe 停止工作提示

java - 我想替换以 # 开头的字符串中的内容,如果它以 !# 开头,则必须跳过它

regex - Grepping 重叠模式匹配