import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:(?:from|join)(?:\\s|\\()+((?:\\w*\\.\\w*)+)(?:\\s|\\))+)";
final String string = "SELECT T.IDP_WAREHOUSE_ID\n"
+ " ,T.IDP_AUDIT_ID\n"
+ " ,T.IDP_DATA_ID\n"
+ " ,T.IDP_DATA_DATE\n"
+ " ,T.TRADESYSTEM\n"
+ " ,T.SOURCESYSTEM\n"
+ " ,T.SUBSYSTEM\n"
+ " ,T.TRADEDATE\n"
+ " ,T.VALUATIONDATE\n"
+ " ,T.TRADEID\n"
+ " ,T.TRADETYPE\n"
+ " ,T.TRADESTATUS\n"
+ " ,T.MAPPEDTRADESTATUS\n"
+ " ,T.RAWBOOKINGLOCATION\n"
+ " ,T.MAPPEDBOOKINGLOCATION\n"
+ " ,T.BOOKINGLOCREGION\n"
+ " ,T.CMCIFBOOKINGLOCATION\n"
+ " ,T.CMCIFBOOKINGLOCATIONREGION\n"
+ " ,T.COUNTERPARTYACCOUNTID\n"
+ " ,T.COUNTERPARTYSHORTNAME\n"
+ " ,T.COUNTERPARTYTYPE\n"
+ " ,T.CUSTOMERNAME\n"
+ " ,T.CUSTOMERADDRESS\n"
+ " ,T.CUSTOMERCOUNTRYCODE\n"
+ " ,T.CUSTOMERCOUNTRYNAME\n"
+ " ,T.CAMLO_RISK\n"
+ " ,T.US_BSA_RISK\n"
+ " ,T.RISKRATING\n"
+ " ,T.PRODUCTTYPE\n"
+ " ,T.PRODUCT\n"
+ " ,T.CMCIFPRODUCTTYPE\n"
+ " ,T.QUANTITY\n"
+ " ,T.PRICE\n"
+ " ,T.CURRENCY\n"
+ " ,T.CURRENCY_ISO_CODE\n"
+ " ,T.CURRENCY_DESCRIPTION\n"
+ " ,T.\"VALUE\"\n"
+ " ,T.TRADERID\n"
+ " ,T.TRANSACTIONACTIVITY\n"
+ " ,T.SOURCETRADEID\n"
+ " ,T.TRADESEQUENCENUMBER\n"
+ " ,T.BASECURRENCY\n"
+ " ,T.BASECURRPRICE\n"
+ " ,T.BASECURRQUANTITY\n"
+ " ,T.BASECURRVALUE\n"
+ " ,T.ISIN\n"
+ " ,T.CUSIP\n"
+ " ,T.RESP\n"
+ " ,T.FACILITY_GLOBAL_COMMITMENT\n"
+ " ,T.FACILITY_HOST_BANK_NET_AMT\n"
+ " ,T.MAP_TRADESYSTEM\n"
+ " ,T.MAP_ACCOUNTFIELDNAME\n"
+ " ,T.MAP_COUNTERPARTYACCOUNTID\n"
+ " ,T.MAP_CUID\n"
+ " ,T.MAP_CIF\n"
+ " ,T.MAP_UEN\n"
+ " ,RC.RAW AS CHICAGO_RAW\n"
+ " ,RC.RESPONSIBILITY_CENTER AS CHICAGO_RESPONSIBILITY_CENTER\n"
+ " ,RC.DESK AS CHICAGO_DESK\n"
+ " ,RC.BUSINESS_SEGMENT AS CHICAGO_BUSINESS_SEGMENT\n"
+ " ,RC.LOB AS CHICAGO_LOB\n"
+ " ,RC.OPERATING_GROUP AS CHICAGO_OPERATING_GROUP\n"
+ " ,AFF.RAW AS AFF_RAW\n"
+ " ,ISS.RAW AS ISS_RAW\n"
+ " ,EC1.ENTITYCOUNTRY AS REGISTRATION_COUNTRY\n"
+ " ,EC2.ENTITYCOUNTRY AS PRINCIPAL_PLACE_OF_BUSINESS\n"
+ " ,ENT.CIF AS ENT_CIF\n"
+ " ,ENT.UEN AS ENT_UEN\n"
+ " ,ENT.ENTITYLEGALNAME AS ENT_ENTITYLEGALNAME\n"
+ " ,ENT.ENTITYADDRESS AS ENT_ENTITYADDRESS\n"
+ " ,ENT.ENTITYACCOUNTNUMBER AS ENT_ENTITYACCOUNTNUMBER\n"
+ " ,ENT.ENTITYSTATUS AS ENT_ENTITYSTATUS\n"
+ " ,ENT.IFI_FLAG AS ENT_IFI_FLAG\n"
+ " ,ENT.SICCAN AS ENT_SICCAN\n"
+ " ,ENT.SICUS AS ENT_SICUS\n"
+ " ,ENT.NBFI_312 AS ENT_NBFI_312\n"
+ " ,ENT.NBFI_NON_312 AS ENT_NBFI_NON_312\n"
+ " ,ENT.RMA AS ENT_RMA\n"
+ " ,ENT.SICCAN_DESC AS ENT_SICCAN_DESC\n"
+ " ,ENT.SICUS_DESC AS ENT_SICUS_DESC\n"
+ " ,ENT.P_AND_C AS ENT_P_AND_C\n"
+ " ,ENT.OFAC AS ENT_OFAC\n"
+ " ,ENT.RMA_ONLY AS ENT_RMA_ONLY\n"
+ " ,ENT.CONN_UEN AS ENT_CONN_UEN\n"
+ " ,ENT.CM_INDICATOR AS ENT_CM_INDICATOR\n"
+ " ,ENT.BMO_RESP AS ENT_BMO_RESP\n"
+ " ,ENT.HARRIS_RESP AS ENT_HARRIS_RESP\n"
+ " ,ENT.PRIM_IND AS ENT_PRIM_IND\n"
+ " ,ENT.PM_CODE AS ENT_PM_CODE\n"
+ " ,APPR.CUSTOMER_NAME AS APPR_CUSTOMER_NAME\n"
+ " ,APPR.UEN AS APPR_UEN\n"
+ " ,APPR.COUNTRY AS APPR_COUNTRY\n"
+ " ,APPR.CONDITIONAL_APPROVAL AS APPR_CONDITIONAL_APPROVAL\n"
+ " ,APPR.PRODUCTS AS APPR_PRODUCTS\n"
+ " ,APPR_FI.CUSTOMER_NAME AS APPR_FI_CUSTOMER_NAME\n"
+ " ,APPR_FI.UEN AS APPR_FI_UEN\n"
+ " ,APPR_FI.COUNTRY AS APPR_FI_COUNTRY\n"
+ " ,APPR_FI.CONDITIONAL_APPROVAL AS APPR_FI_CONDITIONAL_APPROVAL\n"
+ " ,APPR_FI.PRODUCTS AS APPR_FI_PRODUCTS\n"
+ " ,APMS.UEN AS APMS_UEN\n"
+ " ,APMS.CIF AS APMS_CIF\n"
+ " ,APMS.ENTITY_LEGAL_NAME AS APMS_ENTITY_LEGAL_NAME\n"
+ " ,APMS.ENTITY_SHORT_NAME AS APMS_ENTITY_SHORT_NAME\n"
+ " ,APMS.OWNERSHIP_CLASS AS APMS_OWNERSHIP_CLASS\n"
+ " ,APMS.ENTITY_CLASSIFICATION AS APMS_ENTITY_CLASSIFICATION\n"
+ " ,APMS.ASSET_CLASSIFICATION AS APMS_ASSET_CLASSIFICATION\n"
+ " ,APMS.BMO_RC AS APMS_BMO_RC\n"
+ " ,APMS.ENTITY_TYPE AS APMS_ENTITY_TYPE\n"
+ " ,APMS.TIN_SSN AS APMS_TIN_SSN\n"
+ "FROM (\n"
+ " (\n"
+ " (\n"
+ " (\n"
+ " (\n"
+ " (\n"
+ " (\n"
+ " (\n"
+ " (\n"
+ " (\n"
+ " SELECT A.IDP_WAREHOUSE_ID\n"
+ " ,A.IDP_AUDIT_ID\n"
+ " ,A.IDP_DATA_ID\n"
+ " ,A.IDP_DATA_DATE\n"
+ " ,A.TRADESYSTEM\n"
+ " ,A.SOURCESYSTEM\n"
+ " ,A.SUBSYSTEM\n"
+ " ,A.TRADEDATE\n"
+ " ,A.VALUATIONDATE\n"
+ " ,A.TRADEID\n"
+ " ,A.TRADETYPE\n"
+ " ,A.TRADESTATUS\n"
+ " ,A.MAPPEDTRADESTATUS\n"
+ " ,A.RAWBOOKINGLOCATION\n"
+ " ,A.MAPPEDBOOKINGLOCATION\n"
+ " ,A.BOOKINGLOCREGION\n"
+ " ,A.CMCIFBOOKINGLOCATION\n"
+ " ,A.CMCIFBOOKINGLOCATIONREGION\n"
+ " ,A.COUNTERPARTYACCOUNTID\n"
+ " ,A.COUNTERPARTYSHORTNAME\n"
+ " ,A.COUNTERPARTYTYPE\n"
+ " ,A.CUSTOMERNAME\n"
+ " ,A.CUSTOMERADDRESS\n"
+ " ,A.CUSTOMERCOUNTRYCODE\n"
+ " ,A.CUSTOMERCOUNTRYNAME\n"
+ " ,A.CAMLO_RISK\n"
+ " ,A.US_BSA_RISK\n"
+ " ,A.RISKRATING\n"
+ " ,A.PRODUCTTYPE\n"
+ " ,A.PRODUCT\n"
+ " ,A.CMCIFPRODUCTTYPE\n"
+ " ,A.QUANTITY\n"
+ " ,A.PRICE\n"
+ " ,A.CURRENCY\n"
+ " ,A.CURRENCY_ISO_CODE\n"
+ " ,A.CURRENCY_DESCRIPTION\n"
+ " ,A.\"VALUE\"\n"
+ " ,A.TRADERID\n"
+ " ,A.TRANSACTIONACTIVITY\n"
+ " ,A.SOURCETRADEID\n"
+ " ,A.TRADESEQUENCENUMBER\n"
+ " ,A.BASECURRENCY\n"
+ " ,A.BASECURRPRICE\n"
+ " ,A.BASECURRQUANTITY\n"
+ " ,A.BASECURRVALUE\n"
+ " ,A.ISIN\n"
+ " ,A.CUSIP\n"
+ " ,A.RESP\n"
+ " ,A.FACILITY_GLOBAL_COMMITMENT\n"
+ " ,A.FACILITY_HOST_BANK_NET_AMT\n"
+ " ,MAP.TRADESYSTEM AS MAP_TRADESYSTEM\n"
+ " ,MAP.ACCOUNTFIELDNAME AS MAP_ACCOUNTFIELDNAME\n"
+ " ,MAP.COUNTERPARTYACCOUNTID AS MAP_COUNTERPARTYACCOUNTID\n"
+ " ,MAP.CUID AS MAP_CUID\n"
+ " ,MAP.CIF AS MAP_CIF\n"
+ " ,CASE \n"
+ " WHEN (A.TRADESYSTEM = 'LIQ'::\"VARCHAR\")\n"
+ " THEN A.COUNTERPARTYACCOUNTID\n"
+ " ELSE (\"VARCHAR\" (MAP.UEN))::VARCHAR(16)\n"
+ " END AS MAP_UEN\n"
+ " FROM (\n"
+ " BLUEHOUSE.V_TRANSACTIONS A LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITYMAPPING MAP ON (\n"
+ " (\n"
+ " (\n"
+ " (A.COUNTERPARTYACCOUNTID = UPPER(BTRIM(MAP.COUNTERPARTYACCOUNTID)))\n"
+ " AND (UPPER(A.TRADESYSTEM) = UPPER(MAP.TRADESYSTEM))\n"
+ " )\n"
+ " AND (\n"
+ " MAP.IDP_DATA_ID = (\n"
+ " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITYMAPPING.IDP_DATA_ID) AS MAX\n"
+ " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITYMAPPING\n"
+ " )\n"
+ " )\n"
+ " )\n"
+ " )\n"
+ " )\n"
+ " ) T LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_REF_CHICAGO_RCMAPPING RC ON (\n"
+ " (\n"
+ " (RC.RAW = T.RESP)\n"
+ " AND (RC.IDP_END_DATE = '2099-12-31'::DATE)\n"
+ " )\n"
+ " )\n"
+ " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_REF_CHICAGO_AFFILIATED_RCS AFF ON (\n"
+ " (\n"
+ " (AFF.RAW = T.RESP)\n"
+ " AND (AFF.IDP_END_DATE = '2099-12-31'::DATE)\n"
+ " )\n"
+ " )\n"
+ " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_REF_CHICAGO_BOOKING_ISSUES_RCS ISS ON (\n"
+ " (\n"
+ " (ISS.RAW = T.RESP)\n"
+ " AND (ISS.IDP_END_DATE = '2099-12-31'::DATE)\n"
+ " )\n"
+ " )\n"
+ " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY EC1 ON (\n"
+ " (\n"
+ " (\n"
+ " (\n"
+ " EC1.IDP_DATA_ID = (\n"
+ " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY.IDP_DATA_ID) AS MAX\n"
+ " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY\n"
+ " )\n"
+ " )\n"
+ " AND ((\"VARCHAR\" (EC1.UEN))::VARCHAR(16) = T.MAP_UEN)\n"
+ " )\n"
+ " AND (UPPER(EC1.ENTITYADDRESSTYPE) = 'REGISTERED'::\"VARCHAR\")\n"
+ " )\n"
+ " )\n"
+ " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY EC2 ON (\n"
+ " (\n"
+ " (\n"
+ " (\n"
+ " EC2.IDP_DATA_ID = (\n"
+ " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY.IDP_DATA_ID) AS MAX\n"
+ " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY\n"
+ " )\n"
+ " )\n"
+ " AND ((\"VARCHAR\" (EC2.UEN))::VARCHAR(16) = T.MAP_UEN)\n"
+ " )\n"
+ " AND (UPPER(EC2.ENTITYADDRESSTYPE) = 'PRINCIPAL PLACE OF BUSINESS'::\"VARCHAR\")\n"
+ " )\n"
+ " )\n"
+ " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIES ENT ON (\n"
+ " (\n"
+ " (\n"
+ " ENT.IDP_DATA_ID = (\n"
+ " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIES.IDP_DATA_ID) AS MAX\n"
+ " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIES\n"
+ " )\n"
+ " )\n"
+ " AND ((\"VARCHAR\" (ENT.UEN))::VARCHAR(16) = T.MAP_UEN)\n"
+ " )\n"
+ " )\n"
+ " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_312 APPR ON (\n"
+ " (\n"
+ " (\n"
+ " APPR.IDP_DATA_ID = (\n"
+ " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_312.IDP_DATA_ID) AS MAX\n"
+ " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_312\n"
+ " )\n"
+ " )\n"
+ " AND ((\"VARCHAR\" (APPR.UEN))::VARCHAR(16) = T.MAP_UEN)\n"
+ " )\n"
+ " )\n"
+ " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_FI APPR_FI ON (\n"
+ " (\n"
+ " (\n"
+ " APPR_FI.IDP_DATA_ID = (\n"
+ " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_FI.IDP_DATA_ID) AS MAX\n"
+ " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_FI\n"
+ " )\n"
+ " )\n"
+ " AND ((\"VARCHAR\" (APPR_FI.UEN))::VARCHAR(16) = T.MAP_UEN)\n"
+ " )\n"
+ " )\n"
+ " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APMS_ENTITIES APMS ON (\n"
+ " (\n"
+ " (\n"
+ " APMS.IDP_DATA_ID = (\n"
+ " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APMS_ENTITIES.IDP_DATA_ID) AS MAX\n"
+ " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APMS_ENTITIES\n"
+ " )\n"
+ " )\n"
+ " AND ((\"VARCHAR\" (APMS.UEN))::VARCHAR(16) = T.MAP_UEN)\n"
+ " )\n"
+ " )\n"
+ " )\n"
+ "WHERE (\n"
+ " (UPPER(T.CMCIFBOOKINGLOCATION) ~ ~ LIKE_ESCAPE('%CHICAGO%'::\"VARCHAR\", '\\'::\"VARCHAR\"))\n"
+ " OR (T.RESP = AFF.RAW)\n"
+ " );\n";
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