使用 apache jmeter 的正则表达式

Regular Expressions with apache jmeter

我正在使用 Apache Jmeter 的 "Regular Expressions Extractor",我正在尝试从 XML 文件中提取一些参数,如下所示:-

http://search.spotxchange.com/vast/2.00/101458?VPAID=1&cb=1421845139

我正在从此标签中提取视频文件的(高度、宽度、类型)等参数:-

<MediaFile delivery="progressive" apiFramework="VPAID" bitrate="0" height="360" width="480" type="application/x-shockwave-flash">

我使用这个正则表达式来提取这些参数:-

<MediaFile delivery="(.+?)" type="(.+?)" bitrate="(.+?)" height="(.+?)" width="(.+?)"> 

主要问题在于这些标签参数,它们没有按特定顺序出现,例如有时 (width="") 出现在媒体文件参数的开头,有时是最后一个就像前面的例子一样。

那么,我该如何编写一个高效的正则表达式提取器来提取这些参数呢?

假设您不介意匹配 < 和 > 之间的整个属性列表,您可以试试这个:

<MediaFile(\s\w+=\"[^"]+\")+>

<MediaFile # match '<MediaFile' exactly
(          # start of capturing group
\s         # exactly one space
\w+=       # one or more letters followed immediately by an equals
\"         # escaped(starting) quote mark
[^"]+      # match anything EXCEPT double-quote once or more times
\"         # escaped (end) quote
)+         # close capturing group and expect that group once or more times
>          # match >

使用分组“()”,以便可以为多个属性在其中的整个表达式末尾添加一个 +。但是,它不一定是捕获组。它实际上应该是一个非捕获组('(?:regex here)') 但这看起来有点令人困惑,在这种情况下似乎并没有太大关系。

JMeter 提供 XPath Extractor 旨在从 XML/XHTML 响应中获取值。 IE。要接收 MediaFile 标记的 width 属性,您可以使用以下 XPath 表达式:

//MediaFile/@width

获取delivery属性:

//MediaFile/@delivery

有关 XPath 提取器和 XPath 语言的更多信息,请参阅以下参考资料: