繁体   English   中英

如何使用正则表达式在 Java 中的特定模式之后提取 substring?

[英]How to extract a substring after a particular pattern in Java using regular expression?

这是输入字符串 xxx.xx.xx.xx - - [30/Oct/2020:22:39:54 +0000] - 我想从这个特定的字符串中找到日期,即我想如何获得我想要的这个值找到模式“- - [”并希望转义第一个反斜杠“/”。

我试过下面的代码

Matcher matcher = Pattern.compile("^(.*)- - "["").matcher(data);
 if(matcher.find()){
    String date = matcher.group();
    System.out.println(date);
  }

但是,它没有使用左方括号“[”

您可以使用正则表达式来查找和替换第一个字符,如下所示:

String data = "xxx-xxx-xxx - - [30/Oct/2020:22:39:54 +0000] --";
        Matcher matcher = Pattern.compile("(?=- - \\[)([^/]*)/")
                                 .matcher(data);
        if (matcher.find()) {
            System.out.println(matcher.replaceAll("$1\\\\/"));
}

这将 output:

xxx-xxx-xxx - - [30\/Oct/2020:22:39:54 +0000] --

正则表达式模式: (?=- - \[)([^/]*)/

解释:使用Postive Look behind来匹配- -[

我尝试使用下面的代码它有效

Matcher matcher = Pattern.compile("^(.*)- - (.*)$").matcher(data);
                    if(matcher.find()){
                        String date = matcher.group(2).substring(1,3);
                        
                        System.out.println(date);
                    }

但是我使用正则表达式寻找任何其他解决方案

可能重复。

在这里回答: 如何在 Java 中拆分字符串

您也可以尝试 String.substring(begin,end) 与 String.indexOf("- - [") 作为开始和结束相同 ("]")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM