Если вы разрешаете сопоставление только символа слова, вы можете опустить сопоставление ;
и +
из чередования. Обратите внимание, что вам нужно экранировать плюс \+
или добавить оба к классу символов [;+]
Вы можете проверить, что строка не содержит или и плюс с использованием отрицательного просмотра вперед (?!.*(?:or|plus))
Затем сопоставьте символы из 1+ слов, используя \w+
, за которым следует, необязательно, сопоставьте пробел и символы из 1+ слов.
Затем сопоставьте Placebo
в конце строки.
^(?!.*(?:or|plus))\w+(?: \w+)? Placebo$
Regex demo | Postgresql демо
Например
select * from table where col1 ~* '^(?!.*(?:or|plus))\w+(?: \w+)? Placebo$'
Вывод
col1
BI Placebo
BI 10773 Placebo
AMG 386 Placebo
Vehicle Controlled Placebo