我有以下Response Body JSON:
{
"address": [
{
"id": "1234"
}
],
"id": "d1a4f010-48d9-434b-9b3a-2d2b12f5e38c"
}
我正在尝试提取第二个“id”字段的值,即
"id": "d1a4f010-48d9-434b-9b3a-2d2b12f5e38c"
我在JMeter中使用此正则表达式: 正则表达式:“id”:“(。+?)”
当我运行我的测试时,它返回“1234”而不是guid。如何更改我的正则表达式以使其返回guid?
答案 0 :(得分:10)
使用 JMeter ,您可以使用Regular Expression Extractor ...
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": "(.+?)"
答案 1 :(得分:1)
你可以使用懒惰的正则表达式直接找到guid,而不是找到“id”
这样的事情:([0-9a-z-]{36}).*?
如果您不确定如何创建正则表达式,只需使用在线正则表达式制作工具。
答案 2 :(得分:0)
我不知道jmeter但要获得第二个id这个表达式的值
"id"\s*:.+?"id"\s*:\s*"([^"]*)"
它将以某些语言返回您想要的$ 1变量。我想在jmeter中你可以得到类似的东西来获得第一组。
根据this page可能是$ {MYREF_g1}?
答案 3 :(得分: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
答案 4 :(得分:0)
我试过这个:
"id":\s*"([0-9a-f\-]*)"
答案 5 :(得分:0)
尝试使用以下表达式
"id": "([0-9a-z-])*+"
答案 6 :(得分:-1)
第1步:
ID:" 1234&#34 ;;
ID:(?+)
" 1234"
但我们只需要价值。所以试试这个,
第2步:
ID:" 1234&#34 ;;
ID:(?'(+)&#39)
1234