Jmeter采样器以下列模式返回响应:
{&#34;使用者&#34; {&#34;用户id&#34;:1,&#34;名称&#34;:&#34;名1&#34;&#34;电子邮件&#34 ;:&#34; name1@email.com",&#34;作用&#34;:&#34;管理&#34;}&#34;类型&#34;:&#34;无&#34 ;}, {&#34;使用者&#34; {&#34;用户id&#34;:2&#34;名称&#34;:&#34;用户1&#34;&#34;电子邮件&#34;:& #34; user1@email.com",&#34;作用&#34;:&#34;用户&#34;}&#34;类型&#34;:&#34;无&#34;}, {&#34;使用者&#34; {&#34;用户id&#34;:2&#34;名称&#34;:&#34;用户2&#34;&#34;电子邮件&#34;:& #34; user2@email.com",&#34;作用&#34;:&#34;用户&#34;}&#34;类型&#34;:&#34;无&#34;} < / p>
以上标签为多个用户重复
我需要替换“没有”这个词。 (标签&#39;类型&#39;)与&#39; abc&#39;仅适用于电子邮件以&#39; user&#39;开头的用户。 更换后,我需要将整个替换的字符串作为POST请求发送
我在Beanshell后处理器中尝试了以下代码:
response = prev.getResponseDataAsString(); response = response.replaceAll("\"email\":\"user(\\d+)@email.com\",\"role\":\"user\"},\"type\":\"none\"}","\"email\":\"user\\d+@email.com\",\"role\":\"user\"},\"type\":\"abc\"}");
除非在所有匹配模式中将电子邮件更改为userd+@email.com,否则将按预期进行替换。我需要保留这样的电子邮件地址。我该如何解决这个问题? 感谢
答案 0 :(得分:0)
这个正则表达式使用正面的lookbehind来断言电子邮件应该以用户开头:
(?<=\n.*user[^@]@.*)"type":"none"
并将其替换为
"type":"abc"
您使用的正则表达式/程序语言是什么?
答案 1 :(得分:0)
你想要捕捉“没有”之前的内容。并在替换中使用此捕获,如此
response = prev.getResponseDataAsString();
response = response.replaceAll("(\"email\":\"user.+@email.com\",\"role\":\"user\"},\"type\":\")none\"","$1$abc\"");
答案 2 :(得分:0)
尝试下面的一个
response = prev.getResponseDataAsString(); response = response.replaceAll("\"email\":\"user(\\d+)@email.com\",\"role\":\"user\"},\"type\":\"none\"}","\"email\":\"user$1@email.com\",\"role\":\"user\"},\"type\":\"abc\"}");