Groovy-从字符串中提取并显示子字符串

Groovy-从字符串中提取并显示子字符串,groovy,Groovy,我想从下面的字符串中找到一个模式。包含“MATCH.TEXT3”的所有单词,可能是与结束数字匹配的最新单词 {MATCH.TEXT1.1=[1, admin, 07/10/14 09:29:34], MATCH.TEXT2.2=[2, admin, 07/10/14 10:01:08], MATCH.TEXT3.3=[3, admin, 07/10/14 10:08:01], MATCH.TEXT3.4=[4, admin, 07/10/14 11:08:01], MATCH=[TEXT3]}

我想从下面的字符串中找到一个模式。包含“MATCH.TEXT3”的所有单词,可能是与结束数字匹配的最新单词

{MATCH.TEXT1.1=[1, admin, 07/10/14 09:29:34], MATCH.TEXT2.2=[2, admin, 07/10/14 10:01:08], MATCH.TEXT3.3=[3, admin, 07/10/14 10:08:01], MATCH.TEXT3.4=[4, admin, 07/10/14 11:08:01], MATCH=[TEXT3]}
预期产出:

MATCH.TEXT3.4

or

MATCH.TEXT3.3
MATCH.TEXT3.4
最后一场比赛:

class Finder {
    static main(args) {
        def str = '''<your string>'''
        def textFinder= /(MATCH.TEXT3.\d+)/
        def textMatcher = str=~textFinder
        if(textMatcher.size()>0){
            def lastMatch = (Integer) textMatcher.size() - 1
            println (textMatcher=textMatcher[lastMatch][1])         
        }
    }
}
类查找器{
静态干管(args){
def str=“”“
def textFinder=/(MATCH.TEXT3.\d+)/
def textMatcher=str=~textFinder
如果(textMatcher.size()>0){
def lastMatch=(整数)textMatcher.size()-1
println(textMatcher=textMatcher[lastMatch][1])
}
}
}
输出:
MATCH.TEXT3.4

所有匹配都很容易更改。

您可以对字符串使用findAll()方法来提取与给定模式匹配的标记:

String s = '{MATCH.TEXT1.1=[1, admin, 07/10/14 09:29:34], MATCH.TEXT2.2=[2, admin, 07/10/14 10:01:08], MATCH.TEXT3.3=[3, admin, 07/10/14 10:08:01], MATCH.TEXT3.4=[4, admin, 07/10/14 11:08:01], MATCH=[TEXT3]}'

List<String> tokens =  s.findAll(/MATCH\.TEXT3(\.[0-9]+)?/)

assert tokens == ['MATCH.TEXT3.3', 'MATCH.TEXT3.4']

String last = tokens.last()

assert last == 'MATCH.TEXT3.4'
String s='{MATCH.TEXT1.1=[1,管理员,07/10/14 09:29:34],MATCH.TEXT2.2=[2,管理员,07/10/14 10:01:08],MATCH.TEXT3.3=[3,管理员,07/10/14 10:08:01],MATCH.TEXT3.4=[4,管理员,07/10/14 11:08:01],MATCH=[TEXT3]}
列表标记=s.findAll(/MATCH\.TEXT3(\.[0-9]+)?/)
断言标记==['MATCH.TEXT3.3','MATCH.TEXT3.4']
字符串last=tokens.last()
assert last=='MATCH.TEXT3.4'

您已经尝试过什么?groovy的新手,我使用字符串.find(“MATCH.TEXT3.*”)做了很长一段时间,然后用“,”进行拆分,这会产生多个值。字符串的来源是什么?看起来像是来自matcher或json的一些
toString()
。正是我想要的,谢谢Symon的答案,它更干净。我会核对他的答案。请继续支持我的努力;-)这个答案也有效,但我不得不接受Haim的答案,因为它也给了我最后一个匹配,这也是我所期望的。获取最后一个元素更容易:String last=tokens.last()检查更新的示例代码。我觉得这里没那么吵