我遇到了问题。我无法理解如何制作这个正则表达式[^:]+(?=,|$)
所以找不到它("")
我需要正则表达式来传递访问令牌而不使用引号这个表达式:
{"access_token":"UEaYoz4xgKQUyjHv9dg6nzaWN52jHbeGRymGVqdo6wdWwXLjoxPydlNkXEOJYkiQpEXOHTo99Tn7i9Q-MHPMFmnqmfLjel-0qVVpF1rFxEiB_RtX3kMYm5-ihH7OYB3aEzFvnQ_HsNevGlV72AFKKJrhSP9V637SSYC5MDzU4Wri0_uPW1VMuLuq-IhtOPrSe0lqu86clalySuevFf5w_jcHPEm5xIxR4pTzELfYluQiFS9JrACs5tF2d-WwkTZaYhjCf9MWx5JVqtMJC0x8shPvHZArH5Um1jpO12UHtRSU6P5rP5VHuEk8AAQmDEv5EYh59RI6jAWKtYRZMEBoJZOUEbF9ZelPB4jYqpx4gsVkP0GVJ57o_d3OiAllvOokY14u1GXZ3XN1fesOi89srmatVf_J6ka50m9ilrWtzMYWNq6vf2j-JgQA87R80DTaRtCFfg"}
这部分访问令牌需要通过而不需要引号:
UEaYoz4xgKQUyjHv9dg6nzaWN52jHbeGRymGVqdo6wdWwXLjoxPydlNkXEOJYkiQpEXOHTo99Tn7i9Q-MHPMFmnqmfLjel-0qVVpF1rFxEiB_RtX3kMYm5-ihH7OYB3aEzFvnQ_HsNevGlV72AFKKJrhSP9V637SSYC5MDzU4Wri0_uPW1VMuLuq-IhtOPrSe0lqu86clalySuevFf5w_jcHPEm5xIxR4pTzELfYluQiFS9JrACs5tF2d-WwkTZaYhjCf9MWx5JVqtMJC0x8shPvHZArH5Um1jpO12UHtRSU6P5rP5VHuEk8AAQmDEv5EYh59RI6jAWKtYRZMEBoJZOUEbF9ZelPB4jYqpx4gsVkP0GVJ57o_d3OiAllvOokY14u1GXZ3XN1fesOi89srmatVf_J6ka50m9ilrWtzMYWNq6vf2j-JgQA87R80DTaRtCFfg
答案 0 :(得分:1)
你正在使事情变得复杂,JMeter支持Perl5-style regular expressions,这意味着你可以使引号成为搜索模式的一部分,因此它们将被视为左右边界,如:
"access_token":"(.+?)"
在JSON方面,从JMeter 3.0开始使用JSON Path PostProcessor更有意义。相关的JSONPath查询将非常简单:
$.access_token
要了解如何开发更复杂的JSONPath查询,请参阅Advanced Usage of the JSON Path Extractor in JMeter指南
答案 1 :(得分:0)
如果您的意思是[^: "{}]+
,那么您必须这样说。这匹配任何不包含四个枚举字符的字符串。它仍将仅匹配最左边的最长匹配,因此您需要以某种方式锚定匹配。根据你的例子,我猜你真的在寻找
[^:"[{}]+(?="?([},]))
匹配不在字符类中的最长最左边的字符串,这些字符出现在可选的双引号之后,后跟括号或逗号。
正如其他人已在评论中指出的那样,使用正则表达式来解析JSON通常是一个非常糟糕的主意。有许多极端情况会导致失败;首先,JSON可以拆分为多行,这样大括号或逗号与访问令牌不在同一行,然后通过此正则表达式提取它将失败。