Decode My String (Brackets)
QuadR, 17 + ≡ flag = 28 bytes



\d+\[\pL*]
∊(⍎⍵M∩⎕D)⍴⊂⍵M∩⎕A


Try it online!

Find:

 \d+\[\pL*] find digit(s) followed by bracketed Letters

Replace with:

⎕A uppercase Alphabet

 ⍵M∩ intersection of Match and that

 ⊂ enclose (to treat as a whole)

 (…)⍴ reshape to length:

  ⎕D Digits

  ⍵M∩ intersection of Match and that

  ⍎ execute (converts text to number)

 ∊ ϵnlist (flatten)



This is equivalent to the Dyalog APL function:

'\d+\[\pL*]'⎕R{∊(⍎⍵.Match∩⎕D)⍴⊂⍵.Match∩⎕A}⍣≡