I have this oracle SQL Statement. I need a regex that captures only the create table statement with the constraints of primary and foreign keys.
CREATE TABLE "OWB_RUN"."TOKEN_CARD_STATUS_HISTORY"
   (    "TOKEN_CARD_WH" NUMBER NOT NULL ENABLE,
    "TOKEN_STATUS" VARCHAR2(1) NOT NULL ENABLE,
    "TOKEN_STATUS_DATE" DATE NOT NULL ENABLE,
    "LOAD_DATE" DATE,
     CONSTRAINT "TOKEN_CARD_STATUS_PK" PRIMARY KEY ("TOKEN_CARD_WH", "TOKEN_STATUS", "TOKEN_STATUS_DATE")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 1048576 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "OWB_RUN"  ENABLE,
     CONSTRAINT "TOKEN_CARD_STATUS_FK" FOREIGN KEY ("TOKEN_CARD_WH")
      REFERENCES "OWB_RUN"."TOKEN_CARD" ("TOKEN_CARD_WH") ENABLE
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255  NOLOGGING
  STORAGE(
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "CARDS_CRD_FACT_TBL"
  PARTITION BY RANGE ("LOAD_DATE")
 (PARTITION "Y2021_Q1_M03"  VALUES LESS THAN (TO_DATE(' 2021-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS NOLOGGING
The following regex i tried:
pattern = re.compile(r'CREATE\s+TABLE\s+.+?\n\)', re.DOTALL)
create_table_statement = pattern.findall(ddl)[0]
print(create_table_statement)
received the following output:
CREATE TABLE "OWB_RUN"."TOKEN_CARD_STATUS_HISTORY"
   (    "TOKEN_CARD_WH" NUMBER NOT NULL ENABLE,
    "TOKEN_STATUS" VARCHAR2(1)
with a regex that caputers all teh create table () i would be OK