Answer:
SELECT
REGEXP_REPLACE(
REGEXP_REPLACE('TType=SEND|Status=OK|URL=min://j?_a=3&ver=1.1|day=3',
'(TType|URL)=[^|]*\|?', '','g'),
'\|$', '');
Explanation:
The .*?
part in your pattern, although not greedy, consumes colons as well, so doesn't behave as intended. This is fixed by [^|]*
that consumes any non colon character, zero or more times.
Then you would also need to add the global flag 'g', in order to replace all occurences of pattern, as described in the documentation.
Finally, in case a parameter you need to eliminate occurs last (since the parameters can appear in any order), you need to add an extra replacement step to eliminate a residual colon at the end of the string.
For example without the extra step, the following
SELECT
REGEXP_REPLACE('Status=OK|URL=min://j?_a=3&ver=1.1|day=3|TType=SEND',
'(TType|URL)=[^|]*\|?', '','g');
produces
Status=OK|day=3|
while, addding the extra step, the following
SELECT
REGEXP_REPLACE(
REGEXP_REPLACE('Status=OK|URL=min://j?_a=3&ver=1.1|day=3|TType=SEND',
'(TType|URL)=[^|]*\|?', '','g'),
'\|$', '');
produces the desired
Status=OK|day=3