Используя PostgreSQL v.8.2.14, я пытаюсь построить регулярное выражение с несколькими ветвями, некоторые из которых нечувствительны к регистру, другие нет.
Рассмотрим следующую строку perl:
% echo 'foo Foo bar Bar' | perl -pe 's/(foo|(?i:bar))/_\1/g'
_foo Foo _bar _Bar
Я думал, что доберусь с:
select regexp_replace('foo Foo bar Bar','(foo|((?i)bar)',E'_\\1','g');
Но я получаю: ERROR: invalid regular expression: quantifier operand invalid
.
Обратите внимание, что regex_flavor является продвинутым, и, кстати, когда я помещаю (? I) в самое начало регулярного выражения, то ошибки нет:
select regexp_replace('foo Foo bar Bar','(?i)(foo|bar)',E'_\\1','g');
_foo _Foo _bar _Bar
Любая помощь с удовольствием приветствуется.