Supondo que você esteja usando o Python:
((\w)\w* )(\w* ){0,3}\((?i)()[^)]*\)
Este aqui captura o primeiro caractere de uma palavra no grupo 2. Esta palavra é seguida por zero a três palavras (aumente o número, se apropriado). Todas as palavras são delimitadas por um espaço literal. Em seguida, há um colchete aberto seguido pela letra capturada no grupo 2, o que não diferencia maiúsculas de minúsculas. Tudo isso é seguido o resto do padrão de suporte.
Não consegui corresponder o número de palavras com o número de caracteres do acrónimo, pelo que uma das suas condições não foi cumprida.
Meus comentários foram muito pessimistas. Mas vai pegar muita bobagem.
Testado em regex101.com
A propósito, você pode ajustar o padrão de colchetes e usar \([^)]*\)
. Caracteres negativos com multiplicador ganancioso não precisam de referências anteriores, portanto, o processo funciona mais rápido.