Игнорирование строки в регулярном выражении токена - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь проанализировать файл журнала и с трудом пытаюсь игнорировать строку в токене.

Часть журнала я пытаюсь разобрать:

[Wed Mar 06 20:56:27.121877 2019]

Я хочу создать токен для даты, в которой он должен игнорировать любое значение после секунды до года и выглядеть следующим образом:

Mar 06 20:56:27 2019

Моя строка регулярного выражения выглядит примерно так:

\[\S+ (\S+ \d+ \d+:\d+:\d+)

Ответы [ 3 ]

0 голосов
/ 21 июня 2019

Вы можете попробовать что-то вроде этого:

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(' ')));
  }
}

Выход:

06 марта 20:56:27 2019

0 голосов
/ 21 июня 2019

Начните регулярное выражение с месяца, игнорируйте день.Это будет похоже на приведенный ниже фрагмент кода:

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

    }

Вывод:

06 марта 20: 56: 27

0 голосов
/ 21 июня 2019

Вы можете сделать что-то вроде этого:

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

Выход:

06 марта 20:56:27 2019

...