Regex 如何使用groovy脚本从服务响应中的字符串解析子字符串值
以下是服务调用响应的xml标记中的字符串 [CDATA[name=test&username=testaccount&nonce=SL9Z4N03VANY3B5&sharedkeyid=testsystem&auth expiresby=1410288394751&auth algorithm=HMACSHA256&auth signature=tPYLciqNxcEyjHygZ5mBo5qH6q+thhku8lyej213fg=] 我希望捕获“auth expiresby”和“auth signature”的值,并将它们用作下一次服务调用的参数值。这足够好吗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
\[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,只需接受你喜欢的答案。