Group protocol(?<protocol>(?:[^:]+)s?)? ?repeats the group contents below at most once:
Non-Capturing Group(?:[^:]+) Negated Character Class[^:]+ +matches at least one character outside the set below:
:the literal : (5810 / 728 / 3A16)
s?optionally matches the literal s (11510 / 1638 / 7316) (case sensitive)
:the literal : (5810 / 728 / 3A16)
\/the literal / (4710 / 578 / 2F16)
\/the literal / (4710 / 578 / 2F16)
Non-Capturing Group(?:(?<user>[^:\n\r]+):(?<pass>[^@\n\r]+)@)? ?repeats the group contents below at most once:
Group user(?<user>[^:\n\r]+) Negated Character Class[^:\n\r]+ +matches at least one character outside the set below:
:the literal : (5810 / 728 / 3A16)
\na line-feed (newline) character (ASCII 10)
\ra carriage return (ASCII 13)
:the literal : (5810 / 728 / 3A16)
Group pass(?<pass>[^@\n\r]+) Negated Character Class[^@\n\r]+ +matches at least one character outside the set below:
@the literal @ (6410 / 1008 / 4016)
\na line-feed (newline) character (ASCII 10)
\ra carriage return (ASCII 13)
@the literal @ (6410 / 1008 / 4016)
Group host(?<host>(?:www\.)?(?:[^:\/\n\r]+)) Non-Capturing Group(?:www\.)? ?repeats the group contents below at most once:
wwwthe literal text www (case sensitive) \.the literal . (4610 / 568 / 2E16)
Non-Capturing Group(?:[^:\/\n\r]+) Negated Character Class[^:\/\n\r]+ +matches at least one character outside the set below:
:the literal : (5810 / 728 / 3A16)
\/the literal / (4710 / 578 / 2F16)
\na line-feed (newline) character (ASCII 10)
\ra carriage return (ASCII 13)
Non-Capturing Group(?::(?<port>\d+))? ?repeats the group contents below at most once:
:the literal : (5810 / 728 / 3A16)
\d+a digit, repeated at least once
\/?optionally matches the literal / (4710 / 578 / 2F16)
Group request(?<request>[^?#\n\r]+)? ?repeats the group contents below at most once:
Negated Character Class[^?#\n\r]+ +matches at least one character outside the set below:
?the literal ? (6310 / 778 / 3F16)
#the literal # (3510 / 438 / 2316)
\na line-feed (newline) character (ASCII 10)
\ra carriage return (ASCII 13)
\??optionally matches the literal ? (6310 / 778 / 3F16)
Group query(?<query>[^#\n\r]*)? ?repeats the group contents below at most once:
Negated Character Class[^#\n\r]* *matches any number of characters outside the set below:
#the literal # (3510 / 438 / 2316)
\na line-feed (newline) character (ASCII 10)
\ra carriage return (ASCII 13)
\#?optionally matches the literal # (3510 / 438 / 2316)
Group anchor(?<anchor>[^\n\r]*)? ?repeats the group contents below at most once:
Negated Character Class[^\n\r]* *matches any number of characters outside the set below:
\na line-feed (newline) character (ASCII 10)
\ra carriage return (ASCII 13)
m modifier: multiline. Causes ^ and $ to match the start and end of each line, not only the start and end of the string
x modifier: extended. Ignores unescaped whitespace and comments outside character classes