^(.*?)(?:\'s)?(?:\s+(?:Original|Extended|Club|Vocal|Dub|DJ|12\"))*\s+(?:Remix|Mix|Rework|Bootleg|Version|Edit)$The initial
. needed a *? to match text of any length at the start. It's a lazy wildcard so it won't capture part of the text you want to throw out.\b is for word boundaries, i.e. it matches the character preceding a space or end of string. I replaced it with \s (for spaces) because that made more sense here.I also made the group of
Original|Extended|... repeatable to handle names such as "Original Club Mix".And I simplified
(?:Re)?Mix to Remix|Mix because sometimes repetition looks cleaner than clever constructs. 