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

标签 java regex

给定字符串:

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

最佳答案

它无法工作,因为子字符串 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+\\:.*?)(.*)

DEMO

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

\<(\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 中再次转义反斜杠。

DEMO

关于java - 如何在java中使用正则表达式解析给定的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30366634/

相关文章:

java - 用于条件保存的 DynamoDBMapper

java - JOptionPane 对象上使用 PLAIN_MESSAGE 参数显示的错误消息图标

ios - objective-c 中的正则表达式正负十进制值

java - Spring URI 模式。在正则表达式路径中使用斜杠

ruby - 使捕获正则表达式重复

java - 如何在 IE 选项卡而不是新窗口中打开 URL - Java

java - 从 double 值中获取颜色

angularjs - ng-pattern 用于字母数字和所有特殊符号字符

javascript - 正则表达式提取最后一个正斜杠和特定字符串之间的文本(javascript)

Java解析String到Int