Java 在groovy中,是否可以使用命名变量在闭包中打印命名组?

Java 在groovy中,是否可以使用命名变量在闭包中打印命名组?,java,regex,groovy,closures,Java,Regex,Groovy,Closures,类似这样的代码 请帮帮我 "56".replaceAll(/(?<name1>\d)(?<name2>\d)/){print name1} “56.replaceAll(/(?\d)(?\d)/){print name1} 如果我理解并纠正了你的问题,那么地图将永远帮助你。如下图所示的代码 println getMap('12345').name1 Map getMap (String input) { Map namemap = [:

类似这样的代码

请帮帮我

"56".replaceAll(/(?<name1>\d)(?<name2>\d)/){print name1}
“56.replaceAll(/(?\d)(?\d)/){print name1}

如果我理解并纠正了你的问题,那么地图将永远帮助你。如下图所示的代码

println getMap('12345').name1    

Map getMap (String input)
    {
        Map namemap = [:]

        input.eachWithIndex{val, id ->  id+=1 ; namemap["name$id"]=val}

        return namemap

    }
你可以用

"56".replaceAll(/(?<name1>\d)(?<name2>\d)/) {_, name1, name2 ->
      println name1
      println name2
}


这里的要点是,
Matcher
返回的match对象包含3个组,即它等于捕获组的数量,整个匹配本身为组0。因此,您应该为闭包参数提供所有3个参数,然后您可以打印任何您喜欢的参数。

这里的name1和name2是什么?你的预期产出是多少?请再解释一下这个问题。yes name1和name2是regex语句组的名称;我希望在本例中获得组名1“5”并打印它可以与正则表达式“56”一起使用。replaceAll(/(?\d)(?\d)/,“${name1}”)但这不适用于其他目的您希望实现什么?替换者应该如何处理组?这很好;但它更难把名字写两倍于一齿;非常感谢你的帮助
5
6