JMeter:如何使用正则表达式提取重复字段的值?

Esh*_*shi 0 regex json jmeter

我有以下Response Body JSON:

{
    "address": [
    {
        "id": "1234"
    }
    ],
    "id": "d1a4f010-48d9-434b-9b3a-2d2b12f5e38c"
}
Run Code Online (Sandbox Code Playgroud)

我试图提取第二个 "id"字段的值,即

"id": "d1a4f010-48d9-434b-9b3a-2d2b12f5e38c"
Run Code Online (Sandbox Code Playgroud)

我在JMeter中使用这个正则表达式: 正则表达式:"id":"(.+?)"

当我运行我的测试时,它返回"1234"而不是guid.如何更改我的正则表达式以使其返回guid?

hwn*_*wnd 10

使用JMeter,您可以使用正则表达式提取器 ...

Reference Name: myid
Regular Expression: "id": "(.+?)"
Template: $1$
Match No.: 2
Run Code Online (Sandbox Code Playgroud)

如果你指定使用Match No:...

0 = Random Match
1 = First Match 
2 = Second Match
etc....
Run Code Online (Sandbox Code Playgroud)

或使用相应的变量来访问匹配. ${myid_2}

变量设置如下:

myid_matchNr - Number of matches found, possibly 0
myid_n       - (n = 1, 2, etc..) Generated by the template
myid_n_gm    - (m = 0, 1, 2) Groups for the match (n) 
myid         - By itself it is always set to the default value
myid_gn      - Not set at all
Run Code Online (Sandbox Code Playgroud)

或者根据这种情况来判断,如果你更喜欢正则表达式而且你的字符串完全符合规定.你可以做..

],\s+"id": "(.+?)"
Run Code Online (Sandbox Code Playgroud)