我试图解析日志文件并且很难尝试忽略令牌中的字符串。
我试图解析的部分日志:
[Wed Mar 06 20:56:27.121877 2019]
我想为日期创建一个令牌,在该日期应该忽略第二年之后的任何值,如下所示:
Mar 06 20:56:27 2019
我的正则表达式字符串现在看起来像这样:
\[\S+ (\S+ \d+ \d+:\d+:\d+)
你可以这样做:
public class MyClass {
public static void main(String args[]) {
String test = "[Wed Mar 06 20:56:27.121877 2019]";
String[] arr = test.split(" ");
System.out.println(arr[1]+" "+arr[2]+" "+arr[3].substring(0,8)+" "+arr[4].substring(0,4));
}
}
输出:
2019 年 3 月 6 日 20:56:27
你可以尝试这样的事情:
public class Main {
public static void main(String args[]) {
String test = "[Wed Mar 06 20:56:27.121877 2019]";
System.out.println(test.replaceAll("\\.[0-9]+|\\[|\\]", "").substring(test.indexOf(' ')));
}
}
输出:
2019 年 3 月 6 日 20:56:27
从月份开始正则表达式,忽略日。它看起来类似于下面的代码片段:
String dateform = "[Wed Mar 06 20:56:27.121877 2019]";
String regex ="(\\S+ \\d+ \\d+:\\d+:\\d+)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(dateform);
if(m.find()){
System.out.println(m.group(0));
}
输出:
3月6日 20:56:27