regex - 使用正则表达式捕获詹金斯管道中的数据
问题描述
我想在我的 Jenkins 管道中拆分一个 docker 图像 uri。示例 uri = https://test-registry.home.imagehub.com/engineering/images/rhel:latest。我想把它分成4个部分。
https://(test-registry).home.imagehub.com/(engineering/images)/(rhel):(最新)
$1 = 测试注册
$2 = 工程/图像
3 美元 = 瑞尔
4 美元 = 最新
警告 $2 有时只有一个目录级别
我相信正确的正则表达式是:
/\w+:\/\/(.*)\.[^\/]+/(.*)/(\w+):(.*)/
这应该以 1 美元的价格//s
获取第一个(期间)之后的所有内容.
应该通过[^\/]
子域向上移动到 / 分隔符
我希望第二个(.*)
贪婪到但不包括最后一个 / 分隔符。
第三部分应该抓住最后一个/
分隔线之后和之前的所有内容:
第 4 部分应该抓住:
(冒号)之后的所有内容
我确实包含了正则表达式
import java.util.regex.Pattern
I have tried a lot of different solutions to make this work in my jenkins declarative pipeline such as inline:
sReg = https://test-registry.home.imagehub.com/engineering/images/rhel:latest
pipeline
agent
stages
stage ('regex')
steps
scripts
def sReg = https://test-registry.home.imagehub.com/engineering/images/rhel:latest
def registry = sReg =~ /\w+:\/\/(.*)\./
在这里我期望:
registry = test-registry
所以我回应了结果
echo registry.group(1)
但这给了我:
java.lang.IllegalStateException:找不到匹配项
这没有任何意义。我尝试过获取 https/(\w+):/
但结果相同。
我也尝试过上课,但结果相同,没有匹配项。
我想一次性完成所有四个,但如果需要,我会在单独的正则表达式中提取每个部分。在这一点上,我想弄清楚我至少可以得到一场比赛。
我补充说:
导入 java.util.regex.Matcher
然后在我添加的脚本部分中:
def registry = Sreg =~ ///([^.]+)[^/]+/((?:[^/]+/)*[^/]+)/(.+):(.+) /
println(注册表)
当我运行管道时,我得到:
[管道] 回声
java.util.regex.Matcher[pattern=//([^.]+)[^/]+/((?:[^/]+/)*[^/]+)/(.+):( .+) 区域=0,78 最后一场比赛=]
所以不是提取信息而是等于模式?
我在 Sreg 上做了一个回声,它显示了 uri,所以它应该在我的 def 中获取 uri。
解决方案
您可以通过以下方式访问组:
def sReg = "https://test-registry.home.imagehub.com/engineering/images/rhel:latest"
def registry = sReg =~ /\w+:\/\/(.*)\.[^\/]+/(.*)/(\w+):(.*)/
println registry[0] //For all groups
println registry[0][1] //For group 1
来源和例子:https ://mrhaki.blogspot.com/2009/09/groovy-goodness-matchers-for-regular.html
推荐阅读
- ocaml - 了解 OCaml 中的命名参数及其范围
- nginx - Ngnx Redirect 当我们手动访问 URL 时有效,但当我们通过网站导航访问 URL 时无效
- ios - 如何在 UITextView 中禁用换行符并仅启用一次空格
- sendgrid - SendGrid API - 检查收件人是否已打开或单击电子邮件
- python - (Keras) 我的 CNN 模型训练进度卡住了
- java - 我克隆了一个存储库并对其进行了原始工作,但名称仍在其中
- javascript - 谷歌地图:在区域和区域上添加符号
- python - Python。结构不正确的while循环?
- javascript - 无法访问 Herokuapp 配置变量
- javascript - 如何正确验证日期?