Se la riga è a struttura fissa, perchè vuoi usare le espressioni regolari oppure, semplicemente, perchè non usi la dimensione del campo come discriminante, al posto del tipo?

Codice PHP:
$pattern '#^([ \\d]{5})([ \\d]{5})([ \\d]{3}) etc. etc.#'