Java Regex获取单词后的字符串

Java Regex获取单词后的字符串,java,Java,我想在下面的内容 “10-01-2018 10:24:08.006:|=>[DevStatusReq]=0x06”。我想使用正则表达式。 这是我的密码: String margin = LogExtract.extractDataInFile(path, "Margin", "Margin = (.*?) dB"); String devStatusReq = LogExtract.extractDataInFile(path, "DevStatusReq", "[ DevStatusReq ]

我想在下面的内容

“10-01-2018 10:24:08.006:|=>[DevStatusReq]=0x06”
。我想使用正则表达式。 这是我的密码:

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 
我在方法的第二次调用中的正则表达式是错误的。你能帮我吗? 谢谢大家!

  • 在正则表达式中,
    []
    是构建一组值的特殊字符:

    因此
    [DevStatusReq]
    表示以下字母
    DSR EVTAUSSQ

    适合您的模式是
    \[DevStatusReq\]=(.*)


  • 在Java中,
    \
    是一个特殊字符,因此需要对其进行转义,代码中的模式将是:

    LogExtract.extractDataInFile(路径,“DevStatusReq”,“\\[DevStatusReq\\]=(.*)”


  • []
    括号在正则表达式中有特殊含义。它们是核心正则表达式的一部分,称为字符类,所以也许你应该重新阅读你的正则表达式指南。