У меня есть файл журнала, в то время как я хочу найти шаблон, включающий несколько строк, используя регулярное выражение.Из того, что я знаю, я могу читать и сопоставлять только одну строку одновременно.Как загрузить весь файл в память и выполнить сопоставление с образцом?
У меня есть файл журнала, в котором я ищу сообщение об утверждении, подобное этому:
*** ASSERT: 0xb83c6056
*** type of assert: <xyz>
*** file: .
*** firmware revision: <xyz>
*** firmware build timestamp: <xyz>
*** seconds since 1970: <xyz>
*** at address: <xyz>
*** fault address: xyz>
*** Error sub-type: <xyz>
Я использую следующеерегулярное выражение.
re.compile(r'(\*){3}(\s){1}(ASSERT: )(.+)(\n){2}(\t)(\*){3}(\s){1}(type of assert: )(.+)(\n){2}(\t)(\*){3}(\s){1}(file: )(.+)(\n){2}(\t)(\*){3}(\s){1}(firmware revision: )(.+)(\n){2}(\t)(\*){3}(\s){1}(firmware build timestamp: )(.+)(\n){2}(\t)(\*){3}(\s){1}(seconds since 1970: )(.+)(\n){2}(\t)(\*){3}(\s){1}(at address: )(.+)(\n){2}(\t)(\*){3}(\s){1}(fault address: )(.+)(\n){2}(\t)(\*){3}(\s){1}(Error sub-type: )(.+)')
Скажите, пожалуйста, как я могу улучшить свое регулярное выражение, чтобы загрузить весь файл сразу и выполнить сопоставление с регулярным выражением.Прямо сейчас, благодаря моим знаниям, я могу читать только построчно.