給定的字符串解析給定的字符串:如何使用正則表達式中的Java
<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
我正則表達式:
\\<(\\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+\\:.*?\\,)(.*)
但這不是工作,所以請幫助
代碼:
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");
}
}
}
應該輸出什麼? – Jens
請添加一些信息,因爲你沒有說你想從這個字符串中提取什麼? –