Java 通过JMeter正则表达式提取器从响应中提取ID

Java 通过JMeter正则表达式提取器从响应中提取ID,java,regex,jmeter,Java,Regex,Jmeter,我需要使用正则表达式通过jmeter从响应中提取会话id和用户id 答复: \"SessionIdEncr\":\"TLGdqhQbxkEOziVJYXMD7Q==\",\"userIDEncr\":\"9xJbu+CGYN5RnnALeC8mKQ==\" 它的正则表达式是什么?尝试使用以下模式: "SessionIdEncr":"([^"]+)","userIDEncr":"([^"]+)" 关于正则表达式模式没有太多的解释,除了([^“]+)使用一个技巧捕获值之外。它只在不捕获另一个双引

我需要使用正则表达式通过jmeter从响应中提取会话id和用户id

答复:

\"SessionIdEncr\":\"TLGdqhQbxkEOziVJYXMD7Q==\",\"userIDEncr\":\"9xJbu+CGYN5RnnALeC8mKQ==\"

它的正则表达式是什么?

尝试使用以下模式:

"SessionIdEncr":"([^"]+)","userIDEncr":"([^"]+)"
关于正则表达式模式没有太多的解释,除了
([^“]+)
使用一个技巧捕获值之外。它只在不捕获另一个双引号的情况下进行,这意味着该键/值对的结束引号

这将捕获基本64编码的会话ID和用户ID,并将它们作为
$1$
$2$
在提取器模板中可用


在JMeter中,您可以使用查看结果树测试/修复正则表达式:

Regexp Tester视图仅适用于文本响应。它在上部面板中显示纯文本。“测试”按钮允许用户将正则表达式应用于上部面板,结果将显示在下部面板中。 正则表达式引擎与正则表达式提取器中使用的引擎相同

在您的情况下,为会话ID创建2 s,使用以下正则表达式:

SessionIdEncr\\":\\"([^\\]+)
以类似方式获取用户ID

  • 作为返回此文本的请求的子级添加
  • 将其配置为:

    • 创建变量的名称:任何有意义的内容,即
      id
    • 正则表达式:
      \\\“SessionIdEncr\\”:\\“(.+?)”,\\“userIDEncr\\”:\\“(.+?)”

      其他字段可以留空

  • 如果需要,您可以将SessionID称为
    ${id\u g1}
    UserId
    称为
    ${id\u g2}

  • 参考资料:


    您的预期输出是什么,即您想要匹配什么?您尝试过什么正则表达式?我需要得到这个TLGdqhQbxkEOziVJYXMD7Q==\n我尝试过sessionDencr\:\“(.+?”),但失败了{“instrumentationLog\”:null,\“userID\”:0,\“sessionID\”:0,\“roleID\”:0,\“ipAddress\:“106.00.10.62\”,“Dexydays\”:0,\:pWPW1SessionIdEncr\“:\“TLGdqhQbxkEOziVJYXMD7Q==\”,“userIDEncr\”:\“9xJbu+CGYN5RnnALeC8mKQ==\”,“ErrorCode\”:“13\”}尝试转义所有双引号,尽管我认为这不是必需的。我无法加载演示链接,链接似乎已断开。无论如何,我已经尽了我所能;我的演示正在运行,这意味着如果它对您不起作用,您的数据可能会有问题。您的演示运行良好。但当我添加整个请求时,匹配为0。谢谢Match[1][1]=TLGdqhQbxkEOziVJYXMD7Q==是这样的,但我需要获取\“SessionIdEncr\:\“TLGdqhQbxkEOziVJYXMD7Q==”。我如何才能在其中获得?@GracesonAlias稍后使用变量名作为变量:例如
    ${sessionId}
    @GracesonAlias我认为您不需要“\”,但如果需要,请使用
    SessionIdEncr\\“:\”([^”]+)
    回归匹配工作正常,但最后的“\”不会被提取。