Groovy / Grails:获取关键:满足正则表达式的值对

时间:2013-03-20 23:35:55

标签: groovy

我有一张地图,想获得所有键:值对,其中键与正则表达式匹配。我有一个解决方案,我grep for keySet()首先他们循环并找到。但必须有一个更简单的解决方案(或者我希望)。

前:

def qmap = [name: "hair", style: 'straight', color_1: 'brown', color_2: 'blonde', color_3: 'black']

我想获得一个只有颜色的子图。

def colors = [color_1: 'brown', color_2: 'blonde', color_3: 'black']

我可以通过使用.grep来获取密钥,但这只是给了我密钥,我需要循环来获取值。

def colorKeys = qmap.keySet().grep(~/^color.*/)

任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:1)

你可以做到

qmap.subMap( colorKeys )

答案 1 :(得分:1)

真的很简单。只是做:

qmap.findAll{ k,v -> k.matches(~/^color.*/) }