如何在GStringImpl类型的Groovy映射中查找键

如何在GStringImpl类型的Groovy映射中查找键,groovy,Groovy,我有一张这样的地图: [FOOBAR:[“FOOBAR”],\b(De(\w+))\b:[“DELI”,“DELEGATE”],SSN:[“111-55-4444”] 当我迭代映射并打印类类型的键时,我得到以下结果: myMap.each{ k, v -> println "${k.class}:${v}" } class java.lang.String:[FOOBAR] class org.codehaus.groovy.runtime.GStringImpl:[DELI, DELEG

我有一张这样的地图:

[FOOBAR:[“FOOBAR”],\b(De(\w+))\b:[“DELI”,“DELEGATE”],SSN:[“111-55-4444”]

当我迭代映射并打印类类型的键时,我得到以下结果:

myMap.each{ k, v -> println "${k.class}:${v}" }
class java.lang.String:[FOOBAR]
class org.codehaus.groovy.runtime.GStringImpl:[DELI, DELEGATE]
class java.lang.String:[111-55-4444]
问题

如何使用类GStringImpl查找密钥

我尝试了以下方法,但无效:

myMap[/\b(De(\w+))\b/] == ["DELI", "DELEGATE"]
|            |                 |
|            null              false
[FOOBAR:[FOOBAR], \b(De(\w+))\b:[DELI, DELEGATE], SSN:[111-55-4444]]
更新:基于评论


OP想用一个变量作为键,这很简单,你需要把它放在
(…)
之间

更改为:

def myMap = [FOOBAR:["FOOBAR"], \b(De(\w+))\b:["DELI", "DELEGATE"], SSN:["111-55-4444"]]
致:

编辑:更新更多信息


Groovy接受不带引号的键,也接受带引号的键。所以,如果它是对象,那么需要在(..)之间进行包装。它可以是任何对象。

是否要使用“正则表达式”作为键?啊。不,我没有。然而,我处理的是用户输入的正则表达式作为搜索词。这就是为什么我把这个当作钥匙。我将对它调用
toString()
,以结束这种疯狂。谢谢你的指点。您喜欢在键中使用变量吗?或者您想使用正则表达式断言值?我想使用变量作为键,并将其视为string@Rao在本例中,我如何找到密钥?对这么决心?Groovy接受不带引号的键。因此,如果它是对象,则需要在
(..)
之间进行包装。它可以是任何对象。
def userKey = 'key'
def myMap = [FOOBAR:["FOOBAR"], (userKey):["DELI", "DELEGATE"], SSN:["111-55-4444"]]