^start of line
Group timestamp(?<timestamp>[^ ]*) Negated Character Class[^ ]* *matches any number of characters outside the set below:
the literal (3210 / 408 / 2016)
\.the literal . (4610 / 568 / 2E16)
Group time_microseconds(?<time_microseconds>\d*) \d*a digit, repeated any number of times
\+the literal + (4310 / 538 / 2B16)
Negated Character Class[^ ]+ +matches at least one character outside the set below:
the literal (3210 / 408 / 2016)
the literal (3210 / 408 / 2016)
Negated Character Class[^ ]* *matches any number of characters outside the set below:
the literal (3210 / 408 / 2016)
postgresthe literal text postgres (case sensitive) \[the literal [ (9110 / 1338 / 5B16)
\d*a digit, repeated any number of times
\]the literal ] (9310 / 1358 / 5D16)
\[the literal [ (9110 / 1338 / 5B16)
Group groupid(?<groupid>[^ ]\d*) Negated Character Class[^ ] the literal (3210 / 408 / 2016)
\d*a digit, repeated any number of times
-the literal - (4510 / 558 / 2D16)
Group lineid(?<lineid>[^ ]\d*) Negated Character Class[^ ] the literal (3210 / 408 / 2016)
\d*a digit, repeated any number of times
\]the literal ] (9310 / 1358 / 5D16)
Group message(?<message>.*) .*any character (except for line terminators), repeated any number of times
$end of line
g modifier: global. Finds all matches instead of stopping after the first
m modifier: multiline. Causes ^ and $ to match the start and end of each line, not only the start and end of the string