官方参考文档:
正则表达式提取器
允许用户使用 Perl 类型的正则表达式从服务器响应中提取值。作为后处理器,该元素将在其范围内的每个 Sample 请求之后执行,应用正则表达式,提取请求的值,生成模板字符串,并将结果存储到给定的变量名中。
Name: 树中显示的此元素的描述性名称
Apply to:这适用于可以生成子样本的采样器,例如具有嵌入式资源的 HTTP 采样器、邮件阅读器或事务控制器生成的示例。
- Main sample only - 仅适用于主要样本
- Sub-samples only - 仅适用于子样本
- Main sample and sub-samples - 适用于两者.
- JMeter Variable Name to use -提取将应用于命名变量的内容
匹配依次应用于所有符合条件的样本。例如,如果有一个主样本和 3 个子样本,每个子样本都包含一个正则表达式匹配项(即总共 4 个匹配项)。对于 match number = 3,仅子样本,提取器将匹配第 3个子样本。对于匹配数 = 3,主样本和子样本,提取器将匹配第二个子样本(第一个匹配是主样本)。对于匹配数 = 0或负数,将处理所有符合条件的样本。对于匹配号 > 0,一旦找到足够的匹配项,匹配就会停止。
Field to check:
- Body - 响应的正文,例如网页的内容(不包括标题)
- Body (unescaped) - 响应的正文,替换了所有 Html 转义码。请注意,处理 Html 转义时不考虑上下文,因此可能会进行一些不正确的替换
注意,此选项会极大地影响性能,因此仅在绝对必要时使用它并注意其影响
- Body as a Document -通过 Apache Tika 从各种类型的文档中提取文本(请参阅查看结果树文档视图部分)
注意,作为文档的正文选项会影响性能,因此请确保它适合您的测试
- Request Headers - 非 HTTP 示例可能不存在
- Response Headers - 非 HTTP 样本可能不存在
- URL
- Response Code - 例如200
- Response Message - 例如OK
标头对 HTTP 示例很有用;对于其他样本类型,它可能不存在
Name of created variable:
存储结果的 JMeter 变量的名称。另请注意,每个组都存储为[refname]_g#,其中[refname]是您作为参考名称输入的字符串,#是组号,其中组0是整个匹配项,组1是来自第一组括号等
Regular Expression:
用于解析响应数据的正则表达式。这必须包含至少一组括号“ () ”来捕获字符串的一部分,除非使用组$0$。不要将表达式括在/ / - 中,除非您当然也想匹配这些字符
Template:
用于从找到的匹配项创建字符串的模板。这是一个带有特殊元素的任意字符串,用于引用正则表达式中的组。引用组的语法是:' $1$ ' 引用组1,' $2$ ' 引用组2,等等。$0$引用整个表达式匹配的任何内容
Match No. (0 for Random)
指示要使用的匹配项。正则表达式可能匹配多次。
- 使用零值表示 JMeter 应该随机选择一个匹配项。
- 正数 N 表示选择第 n个匹配项。
- 负数与ForEach 控制器一起使用- 见下文。
Default Value
如果正则表达式不匹配,那么引用变量将被设置为默认值。这对于调试测试特别有用。如果没有提供默认值,那么很难判断正则表达式是否不匹配,或者 RE 元素没有被处理,或者可能使用了错误的变量。
但是,如果您有多个设置相同变量的测试元素,您可能希望在表达式不匹配时保持变量不变。在这种情况下,调试完成后删除默认值。
Use empty default value:
如果复选框被选中并且默认值为空,那么 JMeter 会将变量设置为空字符串,而不是不设置它。因此,例如,当您在测试计划中使用${var}(如果参考名称为 var)时,如果未找到提取的值,则 ${var}将等于空字符串而不是包含${var},这可能如果提取的值是可选的,则很有用
如果匹配数设置为非负数,并且发生匹配,则变量设置如下:
- refName - 模板的值
- refName_g n,其中n = 0 , 1 , 2 - 匹配的组
- refName_g - 正则表达式中的组数(不包括0)
如果不匹配,则refName变量设置为默认值(除非不存在)。此外,还删除了以下变量:
- refName_g0
- refName_g1
- refName_g
如果匹配数设置为负数,则处理采样器数据中的所有可能匹配。变量设置如下:
- refName_matchNr - 找到的匹配数;可能是0
- refName_ n,其中n = 1、2、3等 - 由模板生成的字符串
- refName_ n _g m,其中m = 0 , 1 , 2 - 匹配n的组
- refName - 始终设置为默认值
- refName_g n - 未设置
请注意,在这种情况下, refName变量始终设置为默认值,并且未设置关联的组变量。
有关如何指定修饰符的一些示例,以及有关 JMeter 正则表达式的更多信息,另请参阅响应断言。