Givin следующий текст:Чередование приоритета?
constraint FK1 foreign key (Store_id) references "Store",
constraint FK2 foreign key (Product_id) references "Product"),
CONSTRAINT PK1 PRIMARY KEY (id),
CONSTRAINT FK3 FOREIGN KEY (id_user) REFERENCES user(id)
Я пытаюсь выяснить, регулярное выражение, которое дает мне локальную колонку (store_id, PRODUCT_ID и id_user) таблицы (магазин, продукт и пользователь) и столбец таблицы назначения (если применимо id в FK3).
Если я использую следующее регулярное выражение:
FOREIGN\s+KEY\s+?\(([^(]+)\)\s+?REFERENCES\s+(\"[^\"]+\")
Это правильно соответствует первые два варианта.
Если я использую это регулярное выражение:
FOREIGN\s+KEY\s+?\(([^(]+)\)\s+?REFERENCES\s+([^(]+)\(([^)]+)
Это правильно соответствует FK3, но не Fk1 или ФК2. Я надеялся, что смогу совместить это с alteration
. Я попытался следующие:
FOREIGN\s+KEY\s+?\(([^(]+)\)\s+?REFERENCES\s+((\"[^\"]+\")|[^(]+)\(([^)]+)
Если предположить, что, поскольку я кладу состояние 1 первое, что обеспечит правильный матч для первых двух вариантов, однако вместо этого он выступает в качестве второго регулярного выражения.
Любые предложения о том, как я могу это сделать правильно? Есть ли способ установить приоритет на альтернативе?