gpt4 book ai didi

regex - 用于正则表达式匹配的 Groovy 语法

转载 作者:行者123 更新时间:2023-12-03 06:32:23 25 4
gpt4 key购买 nike

以下 Perl 代码的 Groovy 等价物是什么?

my $txt = "abc : groovy : def";
if ($txt =~ / : (.+?) : /) {
my $match = $1;
print "MATCH=$match\n";
# should print "MATCH=groovy\n"
}

我知道有不止一种方法可以做到这一点(包括常规的 Java 方式)——但是“Groovy 方式”是什么?

这是一种方法,但感觉有点笨拙 - 尤其是数组符号(m[0][1]),感觉有点奇怪。有更好的方法吗?如果不是 - 请描述 m[0][1] 背后的逻辑。

def txt = "java : groovy : grails"
if ((m = txt =~ / : (.+?) :/)) {
def match = m[0][1]
println "MATCH=$match"
}

最佳答案

m[0] 是第一个匹配对象。
m[0][0] 是本次匹配中匹配的所有内容。
m[0][1] 是本场比赛中的第一个捕获。
m[0][2] 是本场比赛的第二次捕获。

根据我所读到的内容(我不在 Groovy 中编程或手头有副本),给定

def m = "barbaz" =~ /(ba)([rz])/;

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]

关于regex - 用于正则表达式匹配的 Groovy 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/764387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com