получить набор данных из журнала чата с помощью регулярных выражений и Java - PullRequest
0 голосов
/ 18 марта 2012

Я пишу программу на Java, где мне нужно извлечь некоторые данные из файла журнала чата для дальнейшей обработки с использованием регулярных выражений (кстати, я новичок в регулярных выражениях).Схема журнала чата определяется следующим образом: [чч: мм: сс] строка .
Но конкретные строки, которые я хотел бы извлечь из данных, имеют вид [чч: мм: сс]data2 .Данные, которые я хотел бы извлечь, это чч: мм: сс, данные1 и данные2.Сначала я попытался извлечь время, которое было проще, используя Pattern.compile ("(\ d {2}: \ d {2}: \ d {2}) .
У меня естьдаже удалось извлечь data1 отдельно, используя Pattern p1 = Pattern.compile ("<(. *)>") ; и все было в порядке.
Но когда я пытаюсь получить "чч: мм: ss ", data1 и data2 с помощью следующего регулярного выражения Pattern p = Pattern.compile (" (\ d {2}: \ d {2}: \ d {2}) <(. *)> (.*) ") У меня нет совпадений. Так есть ли у кого-нибудь идея о том, как я могу действовать в этом случае для достижения своей цели?

1 Ответ

1 голос
/ 18 марта 2012

Ну, если бы вы соответствовали своему собственному шаблону, все было бы хорошо.Вы забываете о скобках того времени: [ чч: мм: сс ] .Смотрите здесь:

    String text = "22:44:55 <data quite much> data 2";
    text = text.replaceAll("(\\d{2}:\\d{2}:\\d{2}) <(.*)> (.*)", "replacement");
    System.out.println(text);
    text = "[22:44:55] <data quite much> data 2";
    text = text.replaceAll("(\\d{2}:\\d{2}:\\d{2}) <(.*)> (.*)", "replacement");
    System.out.println(text);

Это дает:

replacement
[22:44:55] <data quite much> data 2

Таким образом, первая строка была найдена, а вторая - нет.Как и ожидалось.

Возможно, вам просто нужно изменить свой шаблон на \\[(\\d{2}:\\d{2}:\\d{2})\\] <(.*)> (.*).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...