Шаблон и выбор необходимых значений из неизвестных форм с использованием Regex с Java - PullRequest
0 голосов
/ 24 апреля 2019

Я ужасно пытаюсь понять это регулярное выражение!Это, как и все остальные, мало что дает с тех пор.

Строка выглядит так: ## Заголовок ##

15:26:04,017 INFO [stdout] (Log4j2-xxxxxxxxx-1) 2019-04-23 15:26:03,945 [ http-xxxxxxxxx-4] [ STANDARD] [ ] [ xxxxxxxxx:8] (rnal.loaders.xxxxxxxxx) INFO xxxxxxxxx.xxxxxxxxx.xxxxxxxxx.xxxxxxxxx|1xxxxxxxxx4|Rest|SystemManagement|v2|importxxxxxxxxxd1070581a|xxxxxxxxxPSUYP7A - The import WORK- PxxxxxxxxxWARNING #xxxxxxxxx.591 GMT

Шаблон выглядит следующим образом:

15:26:04
017
INFO 
stdout
Log4j2-xxxxxxxxx-1
2019-04-23 
15:26:03
http-xxxxxxxxx-4
STANDARD
[] 
[xxxxxxxxx:8] 
rnal.loaders.xxxxxxxxx
INFO
xxxxxxxxx.xxxxxxxxx.xxxxxxxxx.xxxxxxxxx
1xxxxxxxxx4
Rest
SystemManagement
v2
importxxxxxxxxxd1070581a
xxxxxxxxxPSUYP7A 
The import WORK- PxxxxxxxxxWARNING #xxxxxxxxx.591
GMT

Любая помощь с этим сумасшедшим шаблоном будет отличной!Мне сказали, что использование [.*?] помогло бы с X в скобках, но оно все еще у меня над головой, и я не знаю, как это сделать, ПРОДОЛЖИТЕЛЬНО (.replace, .contains, .indexOf) но я знаю, что использование Regex намного чище.

ОБНОВЛЕНИЕ Да, даже с вашим предложением (ями) я не могу придумать даже узнаваемого персонажа.

Я также заметил, что журналы SSH не имеют одинаковый формат:

12:30:58,818 INFO  [x] (x:x, x: [x], Partitions=[0,1,3]) lefd version : 0.11.0.3

Таким образом, вышеприведенная форма отличается:

15:26:04,017 INFO [stdout] (Log4j2-xxxxxxxxx-1) 2019-04-23 15:26:03,945 [ http-xxxxxxxxx-4] [ STANDARD] [ ] [ xxxxxxxxx:8] (rnal.loaders.xxxxxxxxx) INFO xxxxxxxxx.xxxxxxxxx.xxxxxxxxx.xxxxxxxxx|1xxxxxxxxx4|Rest|SystemManagement|v2|importxxxxxxxxxd1070581a|xxxxxxxxxPSUYP7A - The import WORK- PxxxxxxxxxWARNING #xxxxxxxxx.591 GMT

Так что вмое мнение, что это полностью вне моей области знаний о регулярных выражениях - даже если регулярное выражение может разделить все это независимо от формы.

1 Ответ

0 голосов
/ 24 апреля 2019

Этот RegEx может помочь вам создать полное регулярное выражение и соответствовать вашему шаблону.Шаблон не кажется сложным, он просто длинный:

([0-9:]+)(,[0-9]{3})\s([A-Z]+)\s[[a-z]+]\s(\(Log4j2-x{9}-1\))

Один простой способ сопоставления таких длинных шаблонов - использовать группы () и разбивать входные строки на части.


Из вашего вопроса не ясно, какие символы являются динамическими или статическими, а что может быть x.Однако вы можете просто использовать группы и продолжить это RegEx и создать полное совпадение:

enter image description here

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