Сопоставить текст, а также сопоставить текст, если он заключен в список соседей

Я работаю над инструментом многократной замены, и мне нужно заменить имя 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)? regex101.com/r/CMnX69/2?

Wiktor Stribiżew 19.06.2024 13:29
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предлагаю использовать

(?<=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 — граница слова.

Другие вопросы по теме

Похожие вопросы