使用 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 语言的更多信息,请参阅以下参考资料:
我正在使用 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 语言的更多信息,请参阅以下参考资料: