I think this might be easier to follow as 4 separate patterns instead of 1 pattern with 4 different capture groups.

Would you mind updating it?