Groovy - 在最后一次出现冒号时分割字符串

问题描述 投票:0回答:1

我正在尝试从 groovy 脚本中的注册表 URL 获取图像和标签名称,但想在单个命令中完成此操作,这可能吗?

类似这样的事情

def registry_url = 'klp.lab.eu.org:1234/repo_list/EU/node:1.1-alpine'

def (image, tag) = registry_url.split( ':' )

应该给我

klp.lab.eu.org:1234/repo_list/EU/node
1.1-alpine

我知道

tokenize
并且可以使用
registry_url.tokenize( ':' )[-1]
检索标签值,但我不确定如何提取图像名称。

groovy
1个回答
0
投票

在这种情况下,查找运算符

split
更容易使用(“.”是贪婪的,所以你得到最后一个冒号):

def registry_url = 'klp.lab.eu.org:1234/repo_list/EU/node:1.1-alpine'
def (_, image, tag) = (registry_url =~ '(.*):(.*)')[0]
assert image == 'klp.lab.eu.org:1234/repo_list/EU/node'
assert tag == '1.1-alpine'

另一种方法是使用

lastIndexOf
(使用 Groovy 4 范围语法):

def registry_url = 'klp.lab.eu.org:1234/repo_list/EU/node:1.1-alpine'
def lastColon = registry_url.lastIndexOf(':')
def (image, tag) = registry_url.with{ [it[0..<lastColon], it[lastColon<..-1]] }

如果你愿意,你可以坚持

split

def registry_url = 'klp.lab.eu.org:1234/repo_list/EU/node:1.1-alpine'
def parts = registry_url.split(':')
def (image, tag) = parts.with{ [it[0..-2].join(':'), it[-1]] }
© www.soinside.com 2019 - 2024. All rights reserved.