我希望匹配字符串中的所有字符,直到我点击以下子字符串之一:
'='
'+%'
'-%'
我没有问题否定一组单个字符(即[^ = + - ]),我可以正确匹配字符串
(=|\+%|-%)
但我似乎无法弄清楚否定集合的语法。有什么建议吗?
答案 0 :(得分:0)
单独使用REGEXP_SUBSTR无法做到这一点,但这里有一个选项:
with temp as
(
select 'TEST1=TEST1' test1 from dual union all
select 'TEST2+%TEST2' test1 from dual union all
select 'TEST3+TEST3' test1 from dual union all
select 'TEST4-%TEST4' test1 from dual union all
select 'TEST5-TEST5' test1 from dual
)
SELECT test1,
CASE
WHEN REGEXP_INSTR(test1, '+%|=|-%') = 0 THEN test1
ELSE REGEXP_REPLACE(SUBSTR(test1, 1, REGEXP_INSTR(test1, '-%|+%|=')), '[-=+%]')
END
result
FROM temp