我认为一般来说这个主题会有很多申请。我可以用一个例子来说明。考虑到我想要一种从已发布的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)"
}
答案 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