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

Joe*_*oeG 1 groovy

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

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

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

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

Sea*_*ull 6

为什么不?Slashy 字符串也是 GString。见链接

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"
Run Code Online (Sandbox Code Playgroud)