0

我一直在尝试使用以下正则表达式提取器

Reference Name: FMSFlightPlan
Regular Expression: (?s)<FMSFlightPlan>(.*?)</FMSFlightPlan>
Template: $1$
Match No. 1

匹配 XML 中两个 FMSFlightPlan 标签之间的字符串(标签之间的行数不同,因此(?s)建立 dotall 模式)

<FMSFlightPlan>
6500
AN NTEST/GL 
- FPN/FN/RP:DA:LEMG:AA:LEXJ:F:BLN,N38092W003375.UN865. 
BUGIX,N42215W003381.R753.EMANU,N42575W003469 
 </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 断言并未将其识别为变量。为什么建立dotall模式后会出现这种情况?某处是否存在转义错误?我也不明白错误消息是什么意思

Encountered: "\n" 

因为在被解析的文本中没有 \n 字符。

我曾考虑使用 XPath 提取器而不是正则表达式提取器,但听说在涉及大量操作或线程时这不是最佳选择。

4

1 回答 1

1

(?s) - 表示单行,对吗?然后它击中一个 \n 这是一个新的线路信号。这可能是导致错误的原因。它不需要换行符。

你可以使用常规的响应断言吗?我认为您可以使用 Patterns 中的正则表达式进行测试。

于 2013-02-19T22:36:25.067 回答