Подтвердить что ты не робот

Использование postgres regexp_replace для замены списка строк всегда одной строкой

Привет, я хотел бы использовать regexp_replace (или любую другую функцию postgres, если это разумно), чтобы заменить символы в строке на "', т.е. удалить их.

Используя regexp_replace (('def4abcdef4ab', '4', '', 'g'), я могу заменить/стереть все вхождения '4', но я хочу также заменить все вхождения 'e' и b 'в тот же процесс, не используя несколько вложенных процессов, таких как regexp_replace (regexp_replace (regexp_replace())).

то есть. Я хочу, чтобы иметь возможность предоставить короткий список различных строк, которые затем должны быть заменены на уникальную строку.

Любые идеи? Большое спасибо заранее!

4b9b3361

Ответ 2

Канонический способ - использовать классы символов, например,

regexp_replace('def4abcdef4ab','[4eb]', '','g')

хотя метод @alexius также может обрабатывать строки.

Не уверен, что, возможно, не-жадное количественное выражение выражения сделает его более эффективным, например. [4eb]+?.

Ответ 3

Вам не нужны регулярные выражения для замены одного символа. Используйте функцию перевода, т.е.

translate('def4abcdef4ab','4eb', '')

Если ваши строки имеют несколько символов, используйте функцию replace(). Даже вложенные, это, вероятно, даст лучшую производительность, чем регулярные выражения.

Ответ 4

regexp_replace('def4abcdef4ab','4|e|b', '','g')

Ответ 5

Это сработало для меня

select replace('def4abcdef4ab','4','g')