2

我的问题是,如何编写 Jmeter 正则表达式,以便解析文本中有多少行无关紧要?例如,正则表达式:

<FMSFlightPlan>\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)\n(.*)</FMSFlightPlan>

将匹配下面显示的 7 行字符串并返回两个标签之间的所有内容

<FMSFlightPlan>
8725
AN NTEST/GL 
- FPN/FN/RP:DA:GCRR:AA:LEMD:F:KORAL,N29439W012347.UG5. 
SONSO,N30007W012061.UN871.VJF,N36144W005585.UN10. 
HIJ,N38305W005060.Z230.SOTUK,N39116W004448 
</FMSFlightPlan>

但是,相同的正则表达式将为以下 6 行字符串返回 NA:

<FMSFlightPlan>
C90D
AN N9696T/GL 
- FPN/FN/RP:DA:KDEN:AA:KSFO:F:DBL,N39264W106537.J80. 
ILC,N38150W114237..RUMPS,N38072W117163..OAL,N38002W117462 
</FMSFlightPlan>

我知道模板也必须设置为正确的行数,我不认为这是问题的原因。

4

1 回答 1

1

事实证明,我需要建立 dotall 模式,它基本上告诉正则表达式提取器解析新行,就好像它们是空白一样。dotall 模式是通过将标签 (?s) 添加到正则表达式的开头来建立的,如下所示:

(?s)<FMSFlightPlan>(.*?)</FMSFlightPlan>

但是...我仍然无法打印匹配的文本。由于某种原因,我正在使用的 Beanshell 断言无法将正则表达式引用名称识别为变量,并给我错误消息:

断言错误:true 断言失败:false 断言失败消息:org.apache.jorphan.util.JMeterException:调用 bsh 方法时出错:eval 源文件:内联评估:``import java.io.*; //将数据结果写入文件 outfile = "/Users/Dani . . . '' Token Parsing Error: Lexical error at line 12, column 380. Encountered: "\n" (10), after : "\" 3811\t是\tAAR\tSTN\t835\t\t$B738\tfp,nradps,art,CCAAN,EXCD,wp00,p00\t37919\ta0\ti\t10\t0\t3\t0\t \t14\t 25 /M\t0000ADF\t140785\t133806\t006979\t01:15:00\t0484\t360\t0379\t360\t0112\t 000932\tP00 \t007115\t2013-02-13T21:23:00Z\t2013-02-1: 35:00+00:00\t000837\t00:10:00\t000000\t00:00:00\t000837\t00:10:00\t000000\t000000\t000000\t00:00:00\t000000\t00:00: 00\t"

我目前正在尝试使用用户定义的变量来确保 Beanshell 断言能够识别正则表达式。

感谢大家的回复!

于 2013-02-19T00:05:05.390 回答