$re = '/(?x)
^\s*(\d+)\s+ # coupon number
([OX]) # stopover flag
(\w{3})\s+ # depapt
(\w{2})\s* # cr
(\d{1,4}) # flnr
([A-Z0-9]{2}|\s+)\s+ # operating carrier
([A-Z])\s+ # booking class
(\d{2}\w{3}\d{4})\s+ # dep datetime
(\w{2})\s+ # status
([\w\d\/]+)\s+ # farebase
(\w)\s+ # coupon status
(\d{2}\w{3}|\s) # nvb
(\d{2}\w{3}|\s)\s+ # nva
([A-Z\d]{2,3}) # baggage allowance/m';
$str = 'TKT-7452341339738 RCI- 1A LOC-FILEKE
OD-VIEVIE SI- FCMI-0 POI-VIE DOI-04JUN14 IOI-06492931
1.SOME/DUDE MR ADT S I
1 OVIE HG8150 P 11AUG0655 OK PNCRT O 11AUG11AUG 1PC
2 OZRH HG8537 E 21AUG1630 OK ENC25RT O 21AUG21AUG 1PC
VIE
FARE F EUR 22.00
TOTALTAX EUR 127.62
TOTAL EUR 149.62
/FC VIE HG ZRH18.63HG VIE11.04NUC29.67END ROE0.724488
FE NO REFUND/RBK RESTRICTED
FP ELVAT
FOR TAX/FEE DETAILS USE TWD/TAX
FREQUENT FLYER AB-100275125';
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