正则表达式 HTTP 响应正文消息
Regex HTTP Response Body Message
我使用 jmeter 进行 REST 测试。
我发出了一个 HTTP 请求,这是响应数据:
{"id":11,"name":"value","password":null,"status":"ACTIVE","lastIp":"0.0.0.0","lastLogin":null,"addedDate":1429090984000}
我只需要
中的 ID(即 11)
{"id":11,....
我使用下面的正则表达式:
([0-9].+?)
它工作得很好,但如果我的 ID 超过 2 位数字,就会有问题。我需要将正则表达式更改为:
([0-9][0-9].+?)
是否有针对我的问题的动态正则表达式。感谢您的关注。
此致,
斯特菲奥
您可以像这样使用量词:
([0-9]{2,}.+?)
它将捕获 2 个或更多数字,然后是任何符号,1 次或更多次。如果您不想在数字后允许其他字符,请使用 *
而不是 +
:
([0-9]{2,}.*?)
如果您想要 {"id":
和 ,
之间的任何整数,请使用以下正则表达式:
{"id":(\d+),
然而,处理 JSON 数据的更聪明的方法可能是 JSON Path Extractor (available via JMeter Plugins),今后这个选项可以更容易地用于处理复杂的 JSON。
请参阅 Using the XPath Extractor in JMeter 指南(向下滚动到 "Parsing JSON")以了解有关语法和用例的更多信息。
我建议使用以下正则表达式:
"id":([^,]*),
这将首先找到 "id": 然后寻找任何不是逗号的东西,直到找到逗号。请注意,字符分组仅围绕 ID 的值进行。
这适用于任何长度的 ID。
编辑:
相同的概念几乎适用于任何 JSON 数据,例如引用值的地方:
"key":"([^"]*)"
只要值被引用且不包含引号,该正则表达式将从给定键中提取值。它首先找到 "key": 然后匹配任何不是引号的内容直到下一个引号。
我使用 jmeter 进行 REST 测试。 我发出了一个 HTTP 请求,这是响应数据:
{"id":11,"name":"value","password":null,"status":"ACTIVE","lastIp":"0.0.0.0","lastLogin":null,"addedDate":1429090984000}
我只需要
中的 ID(即 11){"id":11,....
我使用下面的正则表达式:
([0-9].+?)
它工作得很好,但如果我的 ID 超过 2 位数字,就会有问题。我需要将正则表达式更改为:
([0-9][0-9].+?)
是否有针对我的问题的动态正则表达式。感谢您的关注。
此致, 斯特菲奥
您可以像这样使用量词:
([0-9]{2,}.+?)
它将捕获 2 个或更多数字,然后是任何符号,1 次或更多次。如果您不想在数字后允许其他字符,请使用 *
而不是 +
:
([0-9]{2,}.*?)
如果您想要 {"id":
和 ,
之间的任何整数,请使用以下正则表达式:
{"id":(\d+),
然而,处理 JSON 数据的更聪明的方法可能是 JSON Path Extractor (available via JMeter Plugins),今后这个选项可以更容易地用于处理复杂的 JSON。
请参阅 Using the XPath Extractor in JMeter 指南(向下滚动到 "Parsing JSON")以了解有关语法和用例的更多信息。
我建议使用以下正则表达式:
"id":([^,]*),
这将首先找到 "id": 然后寻找任何不是逗号的东西,直到找到逗号。请注意,字符分组仅围绕 ID 的值进行。
这适用于任何长度的 ID。
编辑: 相同的概念几乎适用于任何 JSON 数据,例如引用值的地方:
"key":"([^"]*)"
只要值被引用且不包含引号,该正则表达式将从给定键中提取值。它首先找到 "key": 然后匹配任何不是引号的内容直到下一个引号。