$re = '/^(\d+(?:\.\d+)*)\s+(.+?)\s+(\d{1,3}(?:\.\d{3})*,\d{2})\s+(\d{1,3}(?:\.\d{3})*,\d{2})(?:\s+(\d{1,3}(?:\.\d{3})*,\d{2}(?:\s+[CD])?))?$/m';
$str = 'Random number Account number Account Name credit$ Debt$ Value of account
10 53 Another Financial Instruments 1.100,00 1.500,00 400,00 D
531 Café C/C (Taxes) 100,00 50,00 50,00 C
230 5321 Example 100,00 50,00 50,00 C
54 Example 2 300,00 500,00 200,00 D
Account number Account Name credit$ Debt$ Value of account
5.3 Another Financial Instruments 1.100,00 1.500,00 400,00
5.3.1 Café C/C (Taxes) 100,00 50,00 50,00
5.3.2.1 Example 100,00 50,00 50,00
5.4 Example 2 300,00 500,00 200,00
Account number Account Name credit$ Debt$
53 Another Financial Instruments 1.100,00 1.500,00
531 Café C/C (Taxes) 100,00 50,00
5321 Example 100,00 50,00
54 Example 2 300,00 500,00';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php