2013-02-16 80 views
0

我一直在嘗試使用下面的正則表達式提取

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

兩個FMSFlightPlan標籤之間的字符串匹配的XML(線的標記之間的數量而變化,因此,BeanShell的錯誤信息在(?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斷言打印出拍攝的字符串我得到的錯誤信息:

Assertion error: true Assertion failure: false Assertion failure message: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import java.io.*; //write out the data results to a file outfile = "/Users/Dani . . . '' Token Parsing Error: Lexical error at line 12, column 380. Encountered: "\n" (10), after : "\"3811\tYes\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-14T08: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提取器而不是正則表達式提取器,但是聽說當涉及很多操作或線程時,這不是最佳的。

+0

[Jmeter正則表達式可變行數]的可能的副本(http://stackoverflow.com/questions/14165239/jmeter-regex-variable-number-of-lines) – 2013-02-19 07:12:45

回答

1

(?s) - 表示單線,是否正確?然後打到\ n這是一個新的線路信號。這可能會導致錯誤。它不期待一個新的行字符。

您能否使用常規的響應聲明?我認爲你可以在模式中使用正則表達式來測試。

+0

對,(?s)表示單行。但是它在解析的文本中打到一個新的行信號呢?我在文本塊中沒有看到任何內容,Beanshell斷言中沒有任何\ n信號,但我認爲這不重要。 – jmdeamer 2013-02-21 17:45:06