Я работаю над инструментом многократной замены, и мне нужно заменить имя OBJECT_TYPE на разные варианты.
У меня есть несколько экземпляров такого имени, и мне нужно заменять его только при необходимости, поэтому правило состоит в том, чтобы использовать его отдельно или с _POST или _TEMP после него. Может иметь расширение .ddl или .sql. Также может иметь префикс Stage_ или CORE_.
Я придумал это регулярное выражение, но не фиксирую все, что мне нужно.
\b(?!Stage_|CORE_)(OBJECT_TYPE)(?=_POST|_TEMP|.ddl|.sql|\b)
Вот демо-версия регулярного выражения.
Первые 6 строк должны совпадать и соответствовать только OBJECT_TYPE, остальные не должны захватываться.
OBJECT_TYPE.sql
OBJECT_TYPE_POST.sql
Stage_OBJECT_TYPE.sql
AUX_DB.OBJECT_TYPE.ddl
CORE_DB.CORE_OBJECT_TYPE_TEMP.ddl
CORE_DB.CORE_OBJECT_TYPE_POST.ddl
----
OBJECT_TYPE_ID
CR_OBJECT_TYPE_POST.sql
REST_OBJECT_TYPE_POST.sql
FLOW_OBJECT_TYPE_POST.sql
Stage_CR_OBJECT_TYPE.sql
Stage_REST_OBJECT_TYPE.sql
Stage_FLOW_OBJECT_TYPE.sql
AUX_DB.CR_OBJECT_TYPE.ddl
AUX_DB.REST_OBJECT_TYPE.ddl
AUX_DB.FLOW_OBJECT_TYPE.ddl
CORE_DB.CORE_CR_OBJECT_TYPE_TEMP.ddl
CORE_DB.CORE_REST_OBJECT_TYPE_TEMP.ddl
CORE_DB.CORE_FLOW_OBJECT_TYPE_TEMP.ddl
CORE_DB.CORE_CR_OBJECT_TYPE_POST.ddl
CORE_DB.CORE_REST_OBJECT_TYPE_POST.ddl
CORE_DB.CORE_FLOW_OBJECT_TYPE_POST.ddl




Я предлагаю использовать
(?<=Stage_|CORE_|\b)OBJECT_TYPE(?=(?:_POST|_TEMP)?\.(?:dd|sq)l\b)
Посмотрите демонстрацию регулярных выражений .
Подробности:
(?<=Stage_|CORE_|\b) - сразу слева должна быть Stage_, CORE_ или граница словаOBJECT_TYPE — строка, которую нужно найти(?=(?:_POST|_TEMP)?\.(?:dd|sq)l\b) - сразу справа от текущего местоположения должен быть
(?:_POST|_TEMP)? — необязательное появление _POST или _TEMP\. - точка(?:dd|sq)l - dd или sq с последующим l\b — граница слова.
Что-то вроде
(?<=Stage_|CORE_|\b)OBJECT_TYPE(?=(?:_POST|_TEMP)?\.(?:dd|sq)l\b)? regex101.com/r/CMnX69/2?