^start of line
Group artist(?P<artist>.+?(?=\s-\s)) .+?any character (except for line terminators), repeated at least once
Positive Lookahead(?=\s-\s) \sany whitespace character
-the literal - (4510 / 558 / 2D16)
\sany whitespace character
Comment: artist with pos. lookahead
\sany whitespace character
-the literal - (4510 / 558 / 2D16)
\sany whitespace character
Comment: space - space
Group title(?P<title>.+?(?=(?:\(?Feat\.)|$)) .+?any character (except for line terminators), repeated at least once
Positive Lookahead(?=(?:\(?Feat\.)|$) 1st Alternative(?:\(?Feat\.) Non-Capturing Group(?:\(?Feat\.) \(?optionally matches the literal ( (4010 / 508 / 2816)
Featthe literal text Feat (case sensitive) \.the literal . (4610 / 568 / 2E16)
Comment: title with pos. lookahead
\(?optionally matches the literal ( (4010 / 508 / 2816)
Comment: optional open parenthesis
Group artist2(?P<artist2>Feat\.[^()\n]+)? ?repeats the group contents below at most once:
Featthe literal text Feat (case sensitive) \.the literal . (4610 / 568 / 2E16)
Negated Character Class[^()\n]+ +matches at least one character outside the set below:
(the literal ( (4010 / 508 / 2816)
)the literal ) (4110 / 518 / 2916)
\na line-feed (newline) character (ASCII 10)
Comment: artist2 with Feat. before
\)?optionally matches the literal ) (4110 / 518 / 2916)
Comment: optional closing parenthesis
Group subtitle(?P<subtitle>.+)? ?repeats the group contents below at most once:
.+any character (except for line terminators), repeated at least once
$end of line
Comment: optional subtitle
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
x modifier: extended. Ignores unescaped whitespace and comments outside character classes