Com base no seu padrão e na resposta do link : o seguinte padrão funciona no meu editor:
^[0-9]{9}_(010020).*(?<!004)-[0-9,a-z,A-Z]+_[0-9]{8}_[0-9]{4}
Acho que há um sublinhado extra em seu padrão após o sinal "+". E nós temos que combinar os últimos 3 caracteres antes de verificar se eles não são "004".
Dependendo da formatação exata, convém garantir que correspondamos apenas três dígitos: ^[0-9]{9}_(010020)([0-9]*(?<!004)){3}-[0-9,a-z,A-Z]+_[0-9]{8}_[0-9]{4}