如何从键值对中的字符串中获取正则表达式中的数据

时间:2014-07-01 13:18:56

标签: regex grails groovy

有以下字符串:

pTzNmfaQdxVSvoDJPVtSh-idt(null).jpeg

和匹配者:

def matcher = imageName =~ (?<imageKey>\w+)(\-(?<state>.+))?\.(?<ext>\w+)

imageNAme等于pTzNmfaQdxVSvoDJPVtSh-idt(null).jpeg

如何构建以下层次结构?

[matcher.group("imageKey"), matcher.group("state"), matcher.group("ext")]

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用以下正则表达式将pTzNmfaQdxVSvoDJPVtSh-idt(null)jpeg抓取到不同的组中。

^([^\-]*)(-[^\.]*)\.(.*)$

DEMO

答案 1 :(得分:0)

我无法判断您的问题是如何处理匹配器,或者如何将结果放入列表中。

这可能有所帮助:

def src = 'pTzNmfaQdxVSvoDJPVtSh-idt(null).jpeg'
def matcher = src =~ /^([^\-]*)(-[^\.]*)\.(.*)$/
def match = matcher[0]

def result = [match[1], match[2], match[3]]

assert result[0] == 'pTzNmfaQdxVSvoDJPVtSh'
assert result[1] == '-idt(null)'
assert result[2] == 'jpeg'