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.#';