繁体   English   中英

如何在Java中使用正则表达式解析给定字符串

[英]How to parse given string using regular expression in 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

我的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+\\:.*?\\,)(.*)

但这不起作用,所以请帮助

码:

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");
        }
    }
}

它无法工作,因为子字符串System Management:之后没有逗号。 因此,删除最后一个逗号。

\\<(\\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+\\:.*?)(.*)

演示

我想你想要这样的东西。 在这里,我将逗号作为可选部分。

\<(\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+\:(?:.*?,)?)(.*)

在Java中再次转义反斜杠一次。

演示

暂无
暂无

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

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