如何在正则表达式中包含Groovy G-String

时间:2014-05-05 19:51:42

标签: groovy

我认为一般来说这个主题会有很多申请。我可以用一个例子来说明。考虑到我想要一种从已发布的jar文件中提取标准(maven)版本的方法。正则表达式可以用于:

def m = (~/.*-someUniquePortionHere-(.*)\.jar$/).matcher(jarFileName)
m.matches()
String version = "${m.group(1)}"

所以上面的内容过于简化,但是,它适用于UniquePortion - 它有助于简化问题。如果我想将此包装在一个将唯一部分作为参数的方法中,我仍然可以使用斜杠字符串吗?我想在正则表达式中包含“$ uniquePortion”。那就是,以下应该是什么?

def exampleMethod(String uniquePortion, String jarFileName) {
    // what would this look like here?
    def m = 
    m.matches()
    "${m.group(1)"
}

2 个答案:

答案 0 :(得分:2)

为什么不呢? Slashy strings也是GStrings。见link

def unique = "groovy-all"
def m = (~/.*$unique(.*)\.jar$/).matcher("groovy-all:2.2.jar")
m.matches()
String version = "${m.group(1)}"
assert version == ":2.2"

答案 1 :(得分:0)

您仍然可以将斜线字符串连接在一起:

def test = "foo-bar-1.4.jar"
def bar = "bar"
def m = test =~ /.*-/ + bar + /-(.*).jar$/
assert m.matches() // true
assert m.group(1) == "1.4" // true