使用apache jmeter的正则表达式

时间:2015-01-21 13:45:51

标签: regex apache jmeter

我正在使用Apache Jmeter的“正则表达式提取器”,我正在尝试从像这样的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 =“”)出现在媒体文件参数的开头,而有时它是最后一个像上一个例子。

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

2 个答案:

答案 0 :(得分:1)

假设您不介意匹配&lt;之间的整个属性列表。和&gt;,你可以试试这个:

<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)')但看起来有点混乱,在这种情况下看起来不太重要。

答案 1 :(得分:1)

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

//MediaFile/@width

获取delivery属性:

//MediaFile/@delivery

等。

有关XPath Extractor和XPath语言的更多信息,请参阅以下参考: