Regex 如何使用groovy脚本从服务响应中的字符串解析子字符串值

Regex 如何使用groovy脚本从服务响应中的字符串解析子字符串值,regex,parsing,substring,soapui,Regex,Parsing,Substring,Soapui,以下是服务调用响应的xml标记中的字符串 [CDATA[name=test&username=testaccount&nonce=SL9Z4N03VANY3B5&sharedkeyid=testsystem&auth expiresby=1410288394751&auth algorithm=HMACSHA256&auth signature=tPYLciqNxcEyjHygZ5mBo5qH6q+thhku8lyej213fg=] 我希望捕获“auth expiresby”和“auth sig

以下是服务调用响应的xml标记中的字符串

[CDATA[name=test&username=testaccount&nonce=SL9Z4N03VANY3B5&sharedkeyid=testsystem&auth expiresby=1410288394751&auth algorithm=HMACSHA256&auth signature=tPYLciqNxcEyjHygZ5mBo5qH6q+thhku8lyej213fg=]

我希望捕获“auth expiresby”和“auth signature”的值,并将它们用作下一次服务调用的参数值。

这足够好吗

\[CDATA\[.*?auth-expiresby=(\d+).*?auth-signature=(.+?)(?:&.*)?\]\]



它在
[CDATA[
]
之间查找内容。然后它在
auth expiresby=
之后捕获1+个数字,在
auth signature=
之后捕获1+个字符。可能会有更多的数据,因此我们可以选择在结束
\]\]

之前匹配
&
,然后再匹配更多信息。这是一个纯Java问题,只是选择了一种分解字符串的方法

def source = '''
[CDATA[name=test&username=testaccount&nonce=SL9Z4N03VANY3B5&sharedkeyid=testsystem&auth-expiresby=1410288394751&auth-algorithm=HMACSHA256&auth-signature=tPYLciqNxcEyjHygZ5mBo5qH6q+THhXKu8lyej213Fg=]]

'''
def authExpiresby
def authSignature

source.split('&').each {

    def tokens = it.split('=')

    if(tokens[0].equals('auth-expiresby')) {
        authExpiresby = tokens[1]
    }

    if(tokens[0].equals('auth-signature')) {
        authSignature = tokens[1]
    }
}

assert authExpiresby.equals('1410288394751')
assert authSignature.equals('tPYLciqNxcEyjHygZ5mBo5qH6q+THhXKu8lyej213Fg')

不需要thanx,只需接受你喜欢的答案。