如何在Jmeter中使用正则表达式提取多个值

时间:2016-09-13 21:05:49

标签: regex jmeter performance-testing

我正在使用jmeter运行测试,我需要使用正则表达式提取:

insertar?sIws2kyXGJJA_01== 
insertar?sIws2kyXGJJA_02==

在以下字符串中:

[\"EMBPAGE1_00010001\",\"**insertar?sIws2kyXGJJA_01==**\",1,100,\"%\",300,\"px\",0,\"center\",\"\",\"[\"EMBPAGE1_00010002\",\"**insertar?sIws2kyXGJJA_02==**\",1,100,\"%\",300,\"px\",0,\"center\",\"\",\"

3 个答案:

答案 0 :(得分:4)

在DMC给出的答案中,您需要添加正则表达式提取器TWICE以匹配/检索具有不同匹配号(1,2)的两个值。虽然它也是正确的,但建议采用更好的方法来实现同样的目标。

另一种方法:

<强> 1。捕获两个值:

您可以使用模板同时捕获值 ,然后使用索引来引用它。

请检查以下屏幕截图:

enter image description here

在这里,我们使用两个组将这两个值捕获到两个不同的模板中,分别为$ 1 $和$ 2 $。这里,模板默认按照正则表达式中指定的组的顺序存储数据。 (仅供参考,您也可以通过调整模板的顺序来更改订单,例如$ 2 $和$ 1 $。)

现在,如图所示,我们捕获两个值并使用模板存储它们:$ 1 $(指第一组匹配)和$ 2 $(指第二组匹配)

<强> 2。检索值:

现在,使用以下语法在脚本中引用这些值:

$ {insert_values_gn}(n指的是匹配编号)

例如:

$ {insert_values_g1} - 指第一场比赛

$ {insert_values_g2} - 指第二场比赛

为简单起见,您可以将“insert_values”视为使用多个组使用'n'(1,2,3等)捕获的字符串列表作为检索值的索引。

注意:使用模板,您可以使用多个组检索任意数量的值,并使用单个正则表达式提取器通过索引来引用它们。

答案 1 :(得分:3)

我确信有一种更有效的方法,但这有效:

\*\*(.*?)\*\*.*\"\*\*(.*?)\*\*

enter image description here

您也可以只使用\*\*(.*?)\*\* 无论如何它都会匹配它们,因此请确保设置正确的“匹配号”如果您传递其中一个值,则在Jmeter中:

enter image description here

第一场比赛的比赛号码应为1,我相信第二场比赛的比赛号码为2。

答案 2 :(得分:1)

使用超级密码运算符(否定匹配N)enter image description here

UPD:G2 - 在我的例子中,因为我从每次遭遇中提取两组。 每次遭遇都是g1中的“uuid”,g2是第二部分,我需要第二部分。 这就是$ 2 $模板和g2的原因。如果你遇到一个组,你很可能会使用$ 1 $模板将所有遭遇放入g1。 如果你有一个匹配组,你根本不需要_gN结束。 要在组提取后了解更多变量,请添加“Debug PostProcessor”并检查TreeView中的输出。

很好的两个知道像“For each”这样的控制元素可以理解组,并且可以使用regexUUID_这样的前缀并遍历。在大多数情况下,接下来你会在提取后做。

UPD2。有问题的正则表达式的原始版本(insertar \?sIws2kyXGJJA_ \ d *)==([^ [] *) 模板$ 1 $$ 2 $ 你将拥有g1组中的第一部分和g2中的第二部分