微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

Groovy等同于以下Perl代码是什么?
my $txt = "abc : groovy : def";
if ($txt =~ / : (.+?) : /) {
  my $match = $1;
  print "MATCH=$match\n"; 
  # should print "MATCH=groovy\n"
}

我知道TMTOWTDI(包括常规的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]

原文地址:https://www.jb51.cc/regex/357407.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐