用于提取数字的正则表达式位于字符串的第36个字符之后

时间:2019-03-18 09:44:25

标签: regex jmeter

在jmeter中,我需要提取第36个字符之后的数字。

示例

Response:  {"data":{"paymentId":"DOM1234567890111243"}}

我需要提取:11243(有时只有1或2或3或4位数字)

右边界:DOM12345678901也不断变化。但是右边界长度始终为36个宪章。

任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

您的响应数据似乎是JSON,因此我不会依赖此“ 36个字符”,因为其格式可能有所不同。

我建议先提取此paymentId值,然后将正则表达式应用于此DOMxxx位。

  1. JSR223 PostProcessor添加为返回上述数据的请求的子项
  2. 将以下代码放入“脚本”区域:

    def dom = new groovy.json.JsonSlurper().parse(prev.getResponseData()).data.paymentId
    log.info("DOM: " + dom)
    def myValue = ((dom =~ ".{14}(\\d+)")[0][1]) as String
    log.info("myValue: " + myValue)
    
    vars.put("myValue", myValue)
    
  3. 就是这样,您应该可以在需要的情况下以${myValue}的身份访问提取的数据。

    enter image description here

更多信息:

答案 1 :(得分:1)

如果您要检查的字符串中没有其他内容,则可以使用类似以下内容的

.{36}(\d+)

此正则表达式的第一组将是您要查找的号码。

测试和解释:https://regex101.com/r/iDOO8T/2