我有一张这样的地图:
map[:]
map['subject'] = 'math'
map['subject'] = 'science'
map['subject'] = 'english'
map['location'] = 'building b'
map['address'] = 'some street'
和一个看起来像这样的正则表达式
def regex =~'math|science'
所以我需要使用正则表达式来查找所有非数学或科学值,并创建一个JSON对象。我已经使用了map.findAll,但是当我这样做时它不起作用:
map.findAll{it.value == regex}
我得到:
[:]
最终结果应该是
map['subject'] = 'english'
map['location'] = 'building b'
map['address'] = 'some street'
答案 0 :(得分:2)
首先,该行应该不是map[:]
map = [:]
第二,重复定义键在这里没有意义,您只是覆盖了相同的值。看起来您需要多个地图,像这样;
map1 = [subject: 'math', location : 'building z', address: '1 street']
map2 = [subject : 'science', location : 'building y', address : '2 street']
map3 = [subject : 'english', location : 'building b', address : 'some street']
将地图添加到列表中
def maps = [map1, map2, map3]
然后,您可以使用~=
将要匹配的文本与正则表达式进行比较:
maps.findAll { it['subject'] =~ '^(math|science)' }
输出是匹配传递给findAll的条件的地图列表:
[[subject:english, location:building b, address:some street]]