我想在以下内容
"10-01-2018 10:24:08.006 : |=> [ DevStatusReq ] = 0x06"
中的术语“[DevStatusReq] =”之后获取子字符串。我想使用正则表达式。
这是我的代码:
String margin = LogExtract.extractDataInFile(path, "Margin", "Margin = (.*?) dB");
String devStatusReq = LogExtract.extractDataInFile(path, "DevStatusReq", "[ DevStatusReq ] = (.*) ");
System.out.println("Margin : " + margin + " | DevStatusReq : " + devStatusReq );
我返回结果的方法是:
public static String extractDataInFile(String filePath,String element, String filter) {
String result = element + "has not been found ";
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));
String line = null;
while ((line = bufferedReader.readLine()) != null) {
if(line.contains(element)) {
element = line;
Pattern pattern = Pattern.compile(filter);
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
result= matcher.group(1);
}
}
}
bufferedReader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
控制台显示:
Margin : 39 | DevStatusReq : DevStatusReqhas not been found
我在该方法的第二次调用中的正则表达式是错误的。你能帮我吗 ? 谢谢!
答案 0 :(得分:1)
在正则表达式中 []
是构建一组值的特殊字符:
所以[ DevStatusReq ]
表示以下字母DSR evtausq
的一个
正确的模式是\[ DevStatusReq \] = (.*)
在 Java中 \
是一个特殊字符,所以你需要转义它,你的代码中的模式将是:
LogExtract.extractDataInFile(path, "DevStatusReq", "\\[ DevStatusReq \\] = (.*) ");