2014-01-12 55 views
0

誰能幫我解決一個正則表達式的問題?JAVA在抱怨正則表達式模式中的JMeter BeanShell的採樣

所以,我檢查通過在JMeter的BeanShell中斷言的SSH控制檯輸出。輸出看起來是這樣的:

field1: value1 
field2: value2 
... 
fieldN: valueN 

我使用變量來定義的預期值,比如:

fieldNames = "field1|field2|field3"; 
fieldValues = "value1,value2,value3"; 

的BeanShell斷言代碼是這樣的:

import java.util.regex.*; 

Failure = false; 
FailureMessage = "failed"; 

String[] fieldNames = {}; 
String[] fieldValues = {}; 
String resp = SampleResult.getResponseDataAsString(); 

fieldNames = "${lFieldNames}".split("|"); 
fieldValues = "${lExpectedValues}".split(","); 
int fieldNumber = -1; 

for (int i = 0; i < fieldNames.length; i++) 
{ 
    Pattern pattern = Pattern.compile(fieldNames[i] + "\\W\\s(\\d+|\\w+)"); 
    Matcher matcher = pattern.matcher(resp); 
} 

每次我得到這樣的響應:

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.util.regex.*; Failure = false; FailureMessage = "failed"; String[] . . . '' Token Parsing Error: Lexical error at line 16, column 62. Encountered: "W" (87), after : "\"(\\" 

我在Perl中檢查了這個正則表達式,並在使用egrep的Linux控制檯中檢查了它 - 它工作正常。所以我真的不明白Java在這裏不喜歡什麼。

我將是解決此問題的任何幫助,非常感謝。

+0

什麼是'的System.out.println輸出(FIELDNAMES [I] + 「\\ W \\ S(\\ d + | \\ W +)」);' – thefourtheye

+0

它僅僅是相同的:第17行第46列出現詞彙錯誤。遇到:「W」(87),在:「\」\\「 – user3186902

回答

0

我認爲某件事情是錯誤的變量fieldNames[i]

試試這個代碼,而不是用於查看內置模式。

for (int i = 0; i < fieldNames.length; i++) 
{ 
    String tmp = fieldNames[i] + "\\W\\s(\\d+|\\w+)"; 
    System.out.println(">> " +tmp); 
    Pattern pattern = Pattern.compile(tmp); 
    Matcher matcher = pattern.matcher(resp); 
}