【发布时间】:2020-12-03 10:47:43
【问题描述】:
在阅读了其他一些问题和示例后,我来到了这里:
Groovy syntax for regular expression matching
还有我在网上找到的这个文档: https://e.printstacktrace.blog/groovy-regular-expressions-the-definitive-guide/
我在玩它,我认为这是一个非常基本的正则表达式,但由于某种原因,我总是找不到匹配项。
想象一下我有一个这样的 git url: "ssh://git@bitbucket.sits.net/project/repo.git"
我想在我的 groovy 管道中提取项目和 repo 本身: “ssh://git@bitbucket.sits.net/([a-zA-Z-]*)/([a-zA-Z-]*).git”(也许有进行这种匹配的更聪明的方法,但仍然应该有效)
无论如何,问题是我正在测试这个,目前我什至无法进行简单的 ssh 匹配,最后一个是我的组。 它在在线正则表达式测试器中运行良好
但它在 groovy 在线游乐场中不起作用。
这是示例(我在这里测试https://groovy-playground.appspot.com/):
这个输入:
GIT_URL='ssh://git@bitbucket.sits.net/project/repo.git'
def match = GIT_URL =~ /ssh:\/\/git@bitbucket\.sits\.net\/([a-zA-Z-_]*)\/([a-zA-Z-_]*)\.git/
println match
输出不匹配:
java.util.regex.Matcher[pattern=ssh://git@bitbucket\.sits\.net/([a-zA-Z-_]*)/([a-zA-Z-_]*)\.git region=0,45 lastmatch=]
我已经尝试了一些东西,但连 ssh 匹配都不起作用
GIT_URL='ssh://git@bitbucket.sits.net/project/repo.git'
def match = GIT_URL =~ /ssh/
println match
java.util.regex.Matcher[pattern=ssh region=0,45 lastmatch=]
我认为这可能是工具中的问题,但在我的 Jenkins 管道中它也不起作用。
还有另一个问题的例子:
def match2 = "f1234" =~ /[a-z]\d{4}/
println match2
java.util.regex.Matcher[pattern=[a-z]\d{4} region=0,5 lastmatch=]
【问题讨论】: