Your regex have 22 groups, but only 7 are used in substitution, you probably can remove some of them.
Use Debuggex in following links, it show you a nice graph of your RegEx.
As far as I understand it, the code you show do not match the result you want, so it is difficult to know what is what.
Just a few interesting links to help building and debugging RegEx.
Here is a link to RegEx documentation:
perlre - perldoc.perl.org[
^]
Here is links to tools to help build RegEx and debug them:
.NET Regex Tester - Regex Storm[
^]
Expresso Regular Expression Tool[
^]
RegExr: Learn, Build, & Test RegEx[
^]
Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript[
^]
This one show you the RegEx as a nice graph which is really helpful to understand what is doing a RegEx:
Debuggex: Online visual regex tester. JavaScript, Python, and PCRE.[
^]
This site also show the Regex in a nice graph but can't test what match the RegEx:
Regexper[
^]