0

我有以下响应正文 JSON:

{
    "address": [
    {
        "id": "1234"
    }
    ],
    "id": "d1a4f010-48d9-434b-9b3a-2d2b12f5e38c"
}

我正在尝试提取第二个“id”字段的值,即

"id": "d1a4f010-48d9-434b-9b3a-2d2b12f5e38c"

我在 JMeter 中使用这个正则表达式: 正则表达式:“id”:“(。+?)”

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

4

7 回答 7

10

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

Reference Name: myid
Regular Expression: "id": "(.+?)"
Template: $1$
Match No.: 2

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

0 = Random Match
1 = First Match 
2 = Second Match
etc....

或者使用相应的变量来访问匹配。${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

或者根据这种情况判断,如果您只喜欢正则表达式并且您的字符串完全按照说明进行。你可以做..

],\s+"id": "(.+?)"
于 2013-08-29T02:23:25.267 回答
1

您可以使用惰性正则表达式直接查找 guid 而不是查找“id”

像这样的东西:([0-9a-z-]{36}).*?

如果您不确定如何创建正则表达式,只需使用在线正则表达式生成器。

于 2013-08-28T23:22:39.627 回答
0

我不知道 jmeter 但要获取第二个 id 这个表达式的值

 "id"\s*:.+?"id"\s*:\s*"([^"]*)" 

它会在某些语言中返回你想要的 $1 变量。我想在 jmeter 中你可以有类似的东西来获得第一组。

也许 ${MYREF_g1} 根据这个页面

于 2013-08-28T23:47:27.830 回答
0

给定的响应值

{
    "address": [
    {
        "id": "1234"
    }
    ],
    "id": "d1a4f010-48d9-434b-9b3a-2d2b12f5e38c"
}

正则表达式提取第二个 id 值

正则表达式格式

],\s\s\s\s\s"id": "(.+)"

笔记

The above regex extract the following id values
d1a4f010-48d9-434b-9b3a-2d2b12f5e38c
于 2014-11-28T17:05:58.320 回答
0

试试下面的表达式

"id": "([0-9a-z-])*+"
于 2016-10-06T04:43:07.917 回答
0

我试过这个:

"id":\s*"([0-9a-f\-]*)"
于 2016-01-04T22:37:05.787 回答
-1

步骤1:

编号:“1234”;

id:(.+?)

“1234”

但我们只需要值。所以试试这个,

第2步:

编号:“1234”;

id:('(.+?)')

1234

于 2017-06-15T09:12:52.550 回答