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