[英]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.