簡體   English   中英

JAVA抱怨JMeter BeanShell采樣器中的正則表達式模式

[英]JAVA in complaining about regular expression pattern in JMeter BeanShell sampler

誰能幫我解決正則表達式問題?

因此,我正在通過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不喜歡的東西。

非常感謝您提供有關此問題的幫助。

我認為變量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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM