regexp_replace для greenplum (оставить несколько первых и несколько последних символов, остальное заменить *)
Прошу помощи в разборе регулярки по маскированию текста: есть входной текст "my masking string" хочу получить "my*************ng"
Подобрал выражение: select regexp_replace('my masking string', '(?<=..).(?=..)', '*', 'g'); но это выражение работает только для postgresql
greenplum показывает ошибку 'invalid regular expression: quantifier operand invalid' опытным путем понял, что ошибку вызывают знак '?' в регулярке пока не пойму чем его заменить, или как пересобрать выражение.
Ответы (1 шт):
Автор решения: Евгений Ларин
→ Ссылка
Можно обойтись встроенными функциями. И работать будет быстрее, чем с регулярками, если говорить про большой объем данных.
select substr('my masking string',1,2)
|| repeat('*',length('my masking string')-3)
|| substr('my masking string',length('my masking string')-1);