Group remote_addr(?P<remote_addr>((?:[0-9]{1,3}\.){3}[0-9]{1,3})) Group 2((?:[0-9]{1,3}\.){3}[0-9]{1,3}) Non-Capturing Group(?:[0-9]{1,3}\.){3} {3}repeats the group contents below exactly 3 times:
Character Class[0-9]{1,3} {1,3}matches between 1 and 3 characters from the set below:
0-9one character from 0 (4810) to 9 (5710)
\.the literal . (4610 / 568 / 2E16)
Character Class[0-9]{1,3} {1,3}matches between 1 and 3 characters from the set below:
0-9one character from 0 (4810) to 9 (5710)
the literal (3210 / 408 / 2016)
\S+any non-whitespace character, repeated at least once
the literal (3210 / 408 / 2016)
Group remote_user(?P<remote_user>\S+) \S+any non-whitespace character, repeated at least once
the literal (3210 / 408 / 2016)
\[the literal [ (9110 / 1338 / 5B16)
Group time_local(?P<time_local>[\w:\/]+\s[+|-]\d{4}) +matches at least one character from the set below:
\wany word character
:the literal : (5810 / 728 / 3A16)
\/the literal / (4710 / 578 / 2F16)
\sany whitespace character
+the literal + (4310 / 538 / 2B16)
|the literal | (12410 / 1748 / 7C16)
-the literal - (4510 / 558 / 2D16)
\d{4}a digit, repeated exactly 4 times
\]the literal ] (9310 / 1358 / 5D16)
the literal (3210 / 408 / 2016)
\"the literal " (3410 / 428 / 2216)
Group request(?P<request>\S+) \S+any non-whitespace character, repeated at least once
\s?optionally matches any whitespace character
?repeats the group contents below at most once:
\S+any non-whitespace character, repeated at least once
\s?optionally matches any whitespace character
Group protocol(?P<protocol>\S+)? ?repeats the group contents below at most once:
\S+any non-whitespace character, repeated at least once
\"the literal " (3410 / 428 / 2216)
the literal (3210 / 408 / 2016)
Group status_code(?P<status_code>\d{3}|-) \d{3}a digit, repeated exactly 3 times
-the literal - (4510 / 558 / 2D16)
the literal (3210 / 408 / 2016)
Group body_bytes_sent(?P<body_bytes_sent>\d+|-) \d+a digit, repeated at least once
-the literal - (4510 / 558 / 2D16)
\s?optionally matches any whitespace character
\"?optionally matches the literal " (3410 / 428 / 2216)
Group http_referer(?P<http_referer>[^\"]*) Negated Character Class[^\"]* *matches any number of characters outside the set below:
\"the literal " (3410 / 428 / 2216)
\"?optionally matches the literal " (3410 / 428 / 2216)
\sany whitespace character
\"?optionally matches the literal " (3410 / 428 / 2216)
Group http_user_agent(?P<http_user_agent>[^\"]*) Negated Character Class[^\"]* *matches any number of characters outside the set below:
\"the literal " (3410 / 428 / 2216)
\"the literal " (3410 / 428 / 2216)
\sany whitespace character
\"?optionally matches the literal " (3410 / 428 / 2216)
Group http_x_forwarded_for(?P<http_x_forwarded_for>[^\"]*) Negated Character Class[^\"]* *matches any number of characters outside the set below:
\"the literal " (3410 / 428 / 2216)
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