Still struggling with that regex to read logs
This is the regex I made so far
/^(?<date>(\[|)(\d{4}-\d{2}-\d{2}(T| )\d{2}:\d{2}:\d{2}(\]|.+\d{2}:\d{2}\]|.+\d{2}:\d{2})))(?<message>.*?)$/gm
If we take the following text as sample
[2022年10月31日 10:16:22] main.ERROR: The "--only-trace" option does not exist.
#0 /var/www/magento/vendor/symfony/console/Input/ArgvInput.php(143): Symfony\Component\Console\Input\ArgvInput->addLongOption('only-trace', 'test')
#1 /var/www/magento/vendor/symfony/console/Input/ArgvInput.php(79): Symfony\Component\Console\Input\ArgvInput->parseLongOption('--only-trace=te...')
#2 /var/www/magento/vendor/symfony/console/Input/Input.php(55): Symfony\Component\Console\Input\ArgvInput->parse()
[2022年10月31日 10:16:22] main.ERROR: I'm a new group
I'm expecting to retrieve the 2 dates with the full text. Sadly i'm only getting the first line
Do i have the wrong approach ? How can i fix it to make it work on multiline ?
Basically, the date is the one that should define a new line.
1 Answer 1
Try using : Worked for me
preg_match_all('/(?<date>\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}])(?<message>.+?)(\[\])/', $fileSubContent, $contents);
Here is the syntax : preg_match_all(pattern, input, matches, flags, offset)
-
This is your regex, doesn't seems to work : regex101.com/r/oBXtVJ/1 Here is mine : regex101.com/r/tevAsZ/1Clong– Clong2022年12月06日 13:00:13 +00:00Commented Dec 6, 2022 at 13:00