Допустим, у меня есть длинный журнал с чем-то вроде этого:несколько матчей с регулярным выражением
-----------1------------
path/to/file1
real 0.21
user 0.01
sys 0.02
11378688 maximum resident set size
-----------2------------
path/to/file2
real 0.21
user 0.01
sys 0.02
11378688 maximum resident set size
-----------3------------
path/to/file3
real 0.21
user 0.01
sys 0.02
11378688 maximum resident set size
-----------4------------
path/to/file4
ERROR: Lorem ipsum error
ERROR2: Lorem ipsum error 2
real 0.59
user 0.01
sys 0.02
11378688 maximum resident set size
Я хочу, чтобы извлечь путь к файлу, ошибки, если таковые имеются, время после того, как используется «реального» и память. Затем преобразовать их в формат, как это: «время памяти путь»
Я сделал это регулярное выражение:
-*(?:[0-9]*)-*\n(.*)\n((?:.*\n)*)?real\s*(.*)\n.*\n.*\n\s*(.*)\s\s.*\n
Но он разбирает только тогда, когда есть одна запись журнала (также разбирает ошибки, если таковые имеются) , т.е. только:
-----------1------------
path/to/file1
real 0.21
user 0.01
sys 0.02
11378688 maximum resident set size
И ничего после этого.
Может ли кто-нибудь показать мне направление? Я пытаюсь его http://www.regex101.com
Языки: C/C++, баш, Java, Python, перейдите
Какой язык вы используете? – Barmar
Если вы используете PHP 'preg_match_all', вы получите 2-мерный массив со всеми совпадениями. – Barmar
@Barmar О, не думал, что вы придете с веб-технологиями :) Я бы предпочел что-то, что я мог бы быстро скомпилировать без большого количества дополнительных инструментов :) – user3840048