Jmeter 中的 If-Then-Else 条件正则表达式查询

If-Then-Else Conditionals Regular Expressions Query in Jmeter

我正在尝试通过过滤掉 ContactOwnerId 来提取 ContactLastName

首先,我通过正则表达式提取器从 1 号采样器中提取 "ContactOwnerId",这是成功的。

我的 RegEx 查询是: "OWNERID":(\d+),

现在,我想要 "LastName" 通过从采样器 2 到正则表达式提取器。

我的 RegEx 查询是: (?(?"OWNERID":(\d+),==${GetContactOwnerId})(?"LASTNAME":"(.*?)"))

注: "LastName" & "ContactOwnerId"可以从 1 号和 2 号采样器中提取,但我首先从 1 号采样器中提取 "ContactOwnerId",然后尝试提取 "LastName" 来自 2 号采样器,通过比较提取的 "ContactOwnerId" 和当前的 "ContactOwnerId".

第二个正则表达式提取器提取失败,请验证并建议正确的查询。

谢谢

通过以下方式,问题得到解决:

如前所述,我正在通过正则表达式提取器从 1 号采样器中提取 "ContactOwnerId"。

我的 RegExp 查询是:"OWNERID":(\d+),

在第二个采样器中,我试图通过正则表达式提取器再次提取姓氏。

我的 RegExp 查询是:(?(?"OWNERID":(\d+),==${GetContactOwnerId})(?"LASTNAME":"(.*?)"))

我觉得在 RegExp 查询中使用 If-Then-Else 模式很复杂,因此在我的 RegExp 查询中使用了 NOT 运算符并成功运行。

首先,我尝试使用静态数据,它没有出错;

正则表达式查询:"OWNERID":((?!724812)\d+),.*?"LASTNAME":"(.*?)"

我刚刚在我的 RegExp 中附加了 ?!,这意味着 NOT 运算符。

然后,我尝试使用动态变量提取;

正则表达式查询:"OWNERID":((?!${__V(${GetOwnerId})})\d+),.*?"LASTNAME":"(.*?)"

在这里,我使用了V函数,其中returns评估变量名的值。