$re = '/(?:\s*(?=\w+\.|.*as\s+|)(\*|\w+)(?=\s*(?=,|from)))/i';
$str = 'SELECT
PAFCODDNE "Cod. gestione"
,PAFTYPE "Tipo"
,PAFFLUSSO "N. flusso"
,PAFNUMERO "N. rata"
,PAFDTSCAD "Data scadenza"
,PAFSTARTF "Data inizio fisc."
,PAFSTOPF "Data fine fisc."
,PAFDSTART "DTREG" "Pafdstart Dtreg "
,PAFDTMORA "Data incasso"
,PAFVALORE "Importo"
,PAFQCAP "Quota capitale"
,PAFQINT "Quota interessi"
,PAFQIND "Quota indicizzazione"
,PAFCAPRES "Capitale residuo"
,PAFVALORECTV "Controvalore"
,PAFQCAPIAS "Quota capitale (IAS)"
,PAFQINTIAS "Quota interessi (IAS)"
,PAFCAPRESIAS "Capitale Residuo (IAS)"
,PAFTIAS "Tasso ias"
,PAFID "Cod. controparte"
,PAFDESC "Tipo flusso"
,PAFCAMBIOM "Cambio"
,PAFCAMBIOF "Cambio Fattura"
,PAFOSCCAMB "Oscillazione cambio espresso"
,PAFCODCESP "Cod. bene"
,PAFPARMAT "Partita"
,PAFMATESERC "Esercizio"
,PAFMATNRMOV "N. movimento"
,PAFDTMAT "Data maturazione"
,PAFDTBATCH "Data prev. fatturazione"
,PAFRIDPROG "Progr. effetto"
,PAFRIDDATA "Data effetto"
,PAFCAMNUM "Numero cambiale"
,CLCRECEIV "Tipo"
,CLCTYPE "Condition type"
,CLCINTPFLUSSIDESCRIZ "Causale"
,CLCSIGLA "Divisa"
,CLCSTSFLU "Stato"
,CLCTPMATDESCRIZ "Status maturazione"
,CLCDESTPRID "Status RID"
,CLCMATURITYDESCRIZ "Scadenza"
FROM (SELECT
ALIASBASE.CDCMPANY,
ALIASBASE.PAFCODCTR,
ALIASBASE.PAFDTSCAD,
NUMFLUSSO.NUMERO,
ALIASBASE.PAFDESC,
ALIASBASE.PAFTYPE,
ALIASBASE.PAFNATURE,
ALIASBASE.PAFRECEIV,
ALIASBASE.PAFCAUSAL,
ALIASBASE.PAFCODDNE,
ALIASBASE.PAFMATURITY,
CASE
WHEN ALIASBASE.PAFTYPE = \'P\' THEN \'+\'
ELSE \'-\'
END CLCDESCSEGNO,
ALIASBASE.PAFDIVISA,
TCCURRENCY.ACRONYM CLCSIGLA,
TCCURRENCY.TEDECDIGITS,
ALIASBASE.PAFCAMBIOM,
ALIASBASE.PAFVALORECTV,
ALIASBASE.PAFQCAPCTV,
ALIASBASE.PAFQINTCTV,
ALIASBASE.PAFCAPRESCTV,
ALIASBASE.PAFQCAPIASCTV,
ALIASBASE.PAFQINTIASCTV,
ALIASBASE.PAFCAPRESIASCTV,
ALIASBASE.PAFDTSTOP,
ALIASBASE.PAFDSTART,
ALIASBASE.PAFDTMORA,
ALIASBASE.PAFSTOPF,
ALIASBASE.PAFID,
ALIASBASE.PAFFLUSSO,
ALIASBASE.PAFNUMERO,
ALIASBASE.PAFSTARTF,
TABDNE.DESCRIZ CLCDNEDESCRIZ,
INTTPFLUSSI.DESCRIZ CLCINTPFLUSSIDESCRIZ,
SIANAGR.ANADENOM,
DECODE(PAFRECEIV, \'F\', \'Finanziario\',
\'S\', \'Servizio\',
\'O\', \'Altro\',
\'M\', \'Mora\') CLCRECEIV,
DECODE(PAFTYPE, \'O\', \'Onere\',
\'P\', \'Provento\') CLCTYPE,
DECODE(PAFNATURE, \'C\', \'Cliente\',
\'F\', \'Fornitore\') CLCNATURE,
INTOPMATURITY.DESCRIP CLCMATURITYDESCRIZ,
ALIASBASE.PAFRIDPROG ,
ALIASBASE.PAFTIAS,
ALIASBASE.PAFCODCESP,
SICESPIT.CESRIGA,
SIANAIND.INDRAGSIND,
SIANAIND.INDLOC,
SIANAIND.INDIRIZZO,
ALIASBASE.PAFOSCCAMB,
ALIASBASE.PAFCAMBIOF,
ALIASBASE.PAFPARMAT,
ALIASBASE.PAFTPMAT,
ALIASBASE.PAFSTSFLU,
ALIASBASE.PAFMATESERC,
ALIASBASE.PAFMATNRMOV,
ALIASBASE.PAFDTMAT,
ALIASBASE.PAFDTBATCH,
ALIASBASE.PAFTPRID,
DECODE(ALIASBASE.PAFTPRID, \'RRIC\', \'Effe o ricevuto\',
\'REST\', \'Effe o estra o\',
\'RACC\', \'Effe o accreditato\') CLCDESTPRID,
ALIASBASE.PAFRIDDATA,
DECODE( COALESCE(ALIASBASE.PAFTPMAT,\'0\'), \'0\', \'Non maturato\',
\'1\', \'Maturato\') CLCTPMATDESCRIZ,
DECODE(ALIASBASE.PAFSTSFLU, \'A\', \'A ivo\',
\'C\', \'Ina ivo\',
\'S\', \'Sospeso\') CLCSTSFLU,
ALIASBASE.PAFFLRECEIPT,
ALIASBASE.PAFRECEIPT,
ALIASBASE.PAFFAESERC,
ALIASBASE.PAFDTFA,
ALIASBASE.PAFFANRMOV, ALIASBASE.PAFCODSUB
,ALIASBASE.PAFVALORE,
ALIASBASE.PAFQCAP,
ALIASBASE.PAFQINT,
ALIASBASE.PAFQIND,
ALIASBASE.PAFCAPRES,
ALIASBASE.PAFQCAPIAS,
ALIASBASE.PAFQINTIAS,
ALIASBASE.PAFCAPRESIAS,
LsGeneric.ControvaloreToStr(\'01\', ALIASBASE.PAFVALORECTV) CLCPAFVALORECTV
,CAST(CASE WHEN ALIASBASE.PAFTYPE = \'P\' THEN
21 ELSE
20 END AS NUMBER(9)) CLCTRIANGOLO
,CAST(
CASE
WHEN PAFTPMAT IS NOT NULL AND
((RIGPARTITA IS NULL AND PAFNATURE = \'C\') OR
((ALIASBASE.PAFPARMAT IS NULL AND PAFNATURE = \'F\'))) THEN 5
WHEN PAFTPMAT IS NULL THEN 4
WHEN (PAFNATURE = \'C\' AND
COALESCE(VISALDIPARTFLUSSI.TOTSPDIV, 0) > ( SELECT
COALESCE(ARRPOS, 0 )
FROM
TABARROT
WHERE
TABARROT.CDCMPANY = \'01\' AND
TABARROT.CDARROT = \'PAR\'
)
) THEN 7
WHEN (PAFNATURE = \'C\' AND
COALESCE(VISALDIPARTFLUSSI.TOTSPDIV, 0) <= (SELECT
COALESCE(ARRPOS, 0 )
FROM
TABARROT
WHERE
TABARROT.CDCMPANY = \'01\' AND
TABARROT.CDARROT = \'PAR\'
)
) THEN
CASE
WHEN PAFTPMAT = 0 THEN 4
ELSE 5
END
WHEN (PAFNATURE = \'F\' AND
( (SELECT VISALDISIPAFFOR.SALDOFOR
FROM VISALDISIPAFFOR
WHERE
VISALDISIPAFFOR.CDCMPANY = ALIASBASE.CDCMPANY AND
VISALDISIPAFFOR.RIGCDANA = ALIASBASE.PAFID AND
VISALDISIPAFFOR.FORPARMAT = ALIASBASE.PAFPARMAT)
<
( SELECT
COALESCE(-ARRNEG, 0 )
FROM
TABARROT
WHERE
TABARROT.CDCMPANY = \'01\' AND
TABARROT.CDARROT = \'PAR\')
)
) THEN 7
WHEN (PAFNATURE = \'F\' AND
( (SELECT VISALDISIPAFFOR.SALDOFOR
FROM VISALDISIPAFFOR
WHERE
VISALDISIPAFFOR.CDCMPANY = \'01\' AND
VISALDISIPAFFOR.RIGCDANA = ALIASBASE.PAFID AND
VISALDISIPAFFOR.FORPARMAT = ALIASBASE.PAFPARMAT)
>=
(SELECT
COALESCE(-ARRNEG, 0 )
FROM
TABARROT
WHERE
TABARROT.CDCMPANY = \'01\' AND
TABARROT.CDARROT = \'PAR\'
)
)
) THEN 5
ELSE 5
END
AS NUMBER(9)) CLCSEMAFORO,
PAFCAMNUM
FROM
SIPIAFIN ALIASBASE
LEFT OUTER JOIN
INTTPFLUSSI
ON (ALIASBASE.PAFCAUSAL = INTTPFLUSSI.CODICE)
LEFT OUTER JOIN TABDNE ON (TABDNE.CDCMPANY = ALIASBASE.CDCMPANY)
AND (TABDNE.CDDNE = ALIASBASE.PAFCODDNE)
LEFT OUTER JOIN
TCCURRENCY
ON (ALIASBASE.PAFDIVISA = TCCURRENCY.CDCURRENCY)
LEFT JOIN SIANAGR ON ALIASBASE.PAFID = SIANAGR.ANACODANA
LEFT OUTER JOIN INTOPMATURITY ON INTOPMATURITY.CODE = ALIASBASE.PAFMATURITY
LEFT OUTER JOIN SICESPIT
ON (SICESPIT.CDCMPANY = ALIASBASE.CDCMPANY)
AND (SICESPIT.CESCODCES = ALIASBASE.PAFCODCESP)
LEFT OUTER JOIN SIANAIND
ON (ALIASBASE.PAFID = SIANAIND.INDCODANA)
AND (ALIASBASE.PAFADDRESS = SIANAIND.INDCODIND) LEFT OUTER JOIN
(
SELECT
ROWNUM - 1 NUMERO,
T1.CDCMPANY,
T1.PAFCODCTR,
T1.PAFCODSUB,
T1.PAFDTSCAD
FROM
(
SELECT
ALIASBASE2.CDCMPANY,
ALIASBASE2.PAFCODCTR,
ALIASBASE2.PAFCODSUB,
ALIASBASE2.PAFDTSCAD
FROM
SIPIAFIN ALIASBASE2
WHERE
(ALIASBASE2.CDCMPANY = UPPER(\'01\')) AND
(ALIASBASE2.PAFCODCTR = UPPER(\'177749\')) AND (ALIASBASE2.PAFCODSUB = UPPER(\'002\')) GROUP BY
ALIASBASE2.CDCMPANY,
ALIASBASE2.PAFCODCTR, ALIASBASE2.PAFCODSUB, ALIASBASE2.PAFDTSCAD
ORDER BY ALIASBASE2.PAFDTSCAD
)T1
) NUMFLUSSO
ON (ALIASBASE.CDCMPANY = NUMFLUSSO.CDCMPANY) AND
(ALIASBASE.PAFCODCTR = NUMFLUSSO.PAFCODCTR) AND
(ALIASBASE.PAFDTSCAD = NUMFLUSSO.PAFDTSCAD) AND (ALIASBASE.PAFCODSUB = NUMFLUSSO.PAFCODSUB)
LEFT OUTER JOIN SICTRITIVPY ON SICTRITIVPY.CDCMPANY = ALIASBASE.CDCMPANY AND SICTRITIVPY.CONTRACT = ALIASBASE.PAFCODCTR
LEFT OUTER JOIN VISALDIPARTFLUSSI
ON
VISALDIPARTFLUSSI.CDCMPANY = ALIASBASE.CDCMPANY AND
VISALDIPARTFLUSSI.RIGCDCTR = ALIASBASE.PAFCODCTR AND
VISALDIPARTFLUSSI.RIGCDANA = ALIASBASE.PAFID AND
VISALDIPARTFLUSSI.RIGCDDIV = CASE
WHEN SICTRITIVPY.INVOICECURR = \'R\' THEN \'EUR\'
WHEN SICTRITIVPY.INVOICECURR = \'C\' THEN ALIASBASE.PAFDIVISA
END AND
VISALDIPARTFLUSSI.RIGPARTITA = ALIASBASE.PAFPARMAT WHERE (ALIASBASE.CDCMPANY = \'01\') AND
(ALIASBASE.PAFCODCTR = \'177749\') AND
(ALIASBASE.PAFCODSUB = \'002\') AND
(PAFNATURE = \'C\') AND
(PAFTYPE = \'P\')
ORDER BY ALIASBASE.CDCMPANY, ALIASBASE.PAFCODCTR, ALIASBASE.PAFDTSCAD, ALIASBASE.PAFDTMORA, ALIASBASE.PAFNATURE, ALIASBASE.PAFTYPE, ALIASBASE.PAFNUMERO, ALIASBASE.PAFRECEIV, ALIASBASE.PAFMATURITY DESC, ALIASBASE.PAFSTARTF, ALIASBASE.PAFSTOPF
, PAFCODCESP)';
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