请求生成过滤低于指定版本的Docker标签正则表达式
匹配低于指定版本的Docker标签正则表达式方案
需求
过滤出低于指定版本的Docker标签,例如匹配123.0.0.187及更早版本、123.0.0.187_acme.187.xxxxxxx及更早版本,其他版本规则同理。
示例Docker标签
123.0.0.188 123.0.0.188_acme.188.xxxxxxx 123.1.0.141 123.1.0.141_acme.141.xxxxxxx
尝试过的正则表达式
\b(.[0-9]+\.[0-9]+\.[0-9]+\.?|188)\b \b(.[0-9]+\.[0-9]+\.[0-9]+\.?|141)\b
针对特定版本的正则方案
1. 匹配123.0.0.x且x ≤ 187的标签
^123\.0\.0\.(0|[1-9]\d{0,1}|1[0-7]\d|18[0-7])(_acme\.\d+\..*)?$
规则解释:
^123\.0\.0\.:精准匹配版本前缀123.0.0.(0|[1-9]\d{0,1}|1[0-7]\d|18[0-7]):匹配0到187的有效数字:0:单独匹配数字0[1-9]\d{0,1}:匹配1-99的非零开头数字1[0-7]\d:匹配100-179的数字18[0-7]:匹配180-187的数字
(_acme\.\d+\..*)?$:可选匹配后缀部分,允许标签带有_acme.xxx.xxxxxxx这类格式的后缀
2. 匹配123.1.0.x且x ≤ 141的标签
^123\.1\.0\.(0|[1-9]\d{0,1}|1[0-3]\d|14[0-1])(_acme\.\d+\..*)?$
规则解释:
- 前缀部分
^123\.1\.0\.匹配目标版本前缀 - 数字匹配段
(0|[1-9]\d{0,1}|1[0-3]\d|14[0-1])覆盖0到141的所有有效数字:0:单独匹配0[1-9]\d{0,1}:匹配1-99的数字1[0-3]\d:匹配100-139的数字14[0-1]:匹配140-141的数字
- 后缀匹配段和上面一致,允许带后缀的标签格式
通用调整方法
如果需要匹配其他版本前缀(如a.b.c.x)且x ≤ N的标签,只需:
- 将正则中的前缀部分替换为对应的转义格式(比如
a\.b\.c\.) - 修改数字匹配段,覆盖0到N的所有有效数字范围
内容的提问来源于stack exchange,提问作者hare krshn
相关产品推荐
相关产品推荐

