[英]How to parse given string using regular expression in java
Given String: 给定字符串:
<180>May 19 17:54:27 ise121 CISE_Internal_Operations_Diagnostics 0000046406 2 0 2015-05-19 17:54:27.930 +05:30 0000290168 34126 WARN System-Management: Remote syslog target is unavailable
My RegEx : 我的RegEx:
\\<(\\d+)\\>(\\w+[\\d\\s\\:]+\\S+\\s\\S+\\s(\\d+)\\s(\\d+)\\s(\\d+)\\s([\\d\\:\\-\\.\\+\\s]{0,30})\\s+\\d+)\\s+(\\d+)\\s+(\\S+)\\s+(\\S+\\:.*?\\,)(.*)
but this is not working so please help 但这不起作用,所以请帮助
Code: 码:
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchMoreLogsFromSingleRegEx {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = "<180>May 19 17:54:27 ise121 CISE_Internal_Operations_Diagnostics 0000046406 2 0 2015-05-19 17:54:27.930 +05:30 0000290168 34126 WARN System-Management: Remote syslog target is unavailable";
Pattern pattern = Pattern
.compile("\\<(\\d+)\\>(\\w+[\\d\\s\\:]+\\S+\\s\\S+\\s(\\d+)\\s(\\d+)\\s(\\d+)\\s([\\d\\:\\-\\.\\+\\s]{0,30})\\s+\\d+)\\s+(\\d+)\\s+(\\S+)\\s+(\\S+\\:.*?\\,)(.*)");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
System.out.println("true");
StringBuilder sb = new StringBuilder();
int cnt = matcher.groupCount();
System.out.println(cnt);
for (int i = 1; i <= cnt; ++i) {
System.out.println(matcher.group(i) + "\t" + i);
}
} else {
System.out.println("false");
}
}
}
It fails to work because there isn't a comma exists after the substring System Management:
. 它无法工作,因为子字符串
System Management:
之后没有逗号。 So remove the last comma. 因此,删除最后一个逗号。
\\<(\\d+)\\>(\\w+[\\d\\s\\:]+\\S+\\s\\S+\\s(\\d+)\\s(\\d+)\\s(\\d+)\\s([\\d\\:\\-\\.\\+\\s]{0,30})\\s+\\d+)\\s+(\\d+)\\s+(\\S+)\\s+(\\S+\\:.*?)(.*)
I think you want something like this. 我想你想要这样的东西。 Here I made the comma part as optional.
在这里,我将逗号作为可选部分。
\<(\d+)\>(\w+[\d\s\:]+\S+\s\S+\s(\d+)\s(\d+)\s(\d+)\s([\d\:\-\.\+\s]{0,30})\s+\d+)\s+(\d+)\s+(\S+)\s+(\S+\:(?:.*?,)?)(.*)
Escape the backslash one more time in java. 在Java中再次转义反斜杠一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.