什么是以下Perl代码的Groovy等价物?
my $txt = "abc : groovy : def";
if ($txt =~ / : (.+?) : /) {
my $match = $1;
print "MATCH=$match\n";
# should print "MATCH=groovy\n"
}
Run Code Online (Sandbox Code Playgroud)
我知道有多种方法可以做到这一点(包括常规的Java方式) - 但是这样做的"Groovy方式"是什么?
这是一种方法,但它感觉有点笨拙 - 特别是数组符号(m[0][1])感觉有点奇怪.有更好的方法吗?如果没有 - 请描述背后的逻辑m[0][1].
def txt = "java : groovy : grails"
if ((m = txt =~ / : (.+?) :/)) {
def match = m[0][1]
println "MATCH=$match"
}
Run Code Online (Sandbox Code Playgroud)
Cha*_*ens 81
m[0]是第一个匹配对象.
m[0][0]是这场比赛中匹配的一切.
m[0][1]是这场比赛中的第一场比赛.
m[0][2]是这场比赛中的第二次捕获.
根据我所读到的内容(我不用Groovy编程或者有一个方便的副本),给出
def m = "barbaz" =~ /(ba)([rz])/;
Run Code Online (Sandbox Code Playgroud)
m[0][0]将"bar"
m[0][1]将"ba"
m[0][2]将"r"
m[1][0]将"baz"
m[1][1]将"ba"
m[1][2]将"z"
我无法忍受不知道我是否正确,所以我下载了groovy并写了一个例子:
def m = "barbaz" =~ /(ba)([rz])/;
println "m[0][0] " + m[0][0]
println "m[0][1] " + m[0][1]
println "m[0][2] " + m[0][2]
println "m[1][0] " + m[1][0]
println "m[1][1] " + m[1][1]
println "m[1][2] " + m[1][2]
Run Code Online (Sandbox Code Playgroud)
kno*_*orv 20
这是我可以实现的与Perl代码最接近的匹配:
def txt = "abc : groovy : def"
if ((m = txt =~ / : (.+?) : /)) {
def match = m.group(1)
println "MATCH=$match"
}
Run Code Online (Sandbox Code Playgroud)