You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Docker镜像地址正则表达式以移除冗余分组?

调整正则表达式提取Docker镜像信息分组问题

需求说明

  • 场景1:字符串docker1: mycompany.com:5000/example_1:0.0.2,需提取3组:docker1、example_1、0.0.2
  • 场景2:字符串docker2: mycompany.com:5000/example_2,需提取2组:docker2、example_2
  • 场景3:字符串docker3: mycompany.com:5000/example_3:latest,需提取3组:docker3、example_3、latest

当前问题

使用正则表达式^(.*): mycompany\.com:5000\/((\S*)\:(\w+.?\w+.?\w+)\|\S*)$时,场景1、3会产生冗余分组(如匹配出example_1:0.0.2这类不需要的分组),需要调整正则消除冗余。

解决方案

调整后的正则表达式

^([^:]+): mycompany\.com:5000\/([^:]+)(?::([\w.]+))?$

正则逻辑解释

  • ^([^:]+):捕获第一个冒号前的全部内容作为第1组,用[^:]精准匹配非冒号字符,避免过度匹配
  • : mycompany\.com:5000\/:匹配固定的镜像仓库前缀,无需捕获
  • ([^:]+):捕获镜像名部分作为第2组,同样用[^:]确保只取到标签分隔符前的内容
  • (?::([\w.]+))?$:用非捕获分组包裹可选的标签部分,([\w.]+)捕获版本标签作为第3组,?标记该部分为可选,适配无标签的场景2

匹配结果验证

  • 场景1:第1组docker1,第2组example_1,第3组0.0.2
  • 场景2:第1组docker2,第2组example_2(无第3组)
  • 场景3:第1组docker3,第2组example_3,第3组latest

该正则完全消除了冗余分组,所有捕获组均为需求指定的内容。

内容的提问来源于stack exchange,提问作者Tanc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:07:07