使用 regex_replace 删除特殊字符时如何不替换“]”

how not to replace "]" when using regex_replace for removing special characters

我正在尝试从 table 的评论栏中删除一些特殊字符。我使用了下面的语句,但它似乎删除了 ']',即使它在 ^[not] 列表中。

UPDATE TEST 
set comments=REGEXP_REPLACE(
               comments,
               '[^[a-z,A-Z,0-9,[:space:],''&'','':'',''/'',''.'',''?'',''!'','']'']]*',
               ' '
               );

table 数据包含以下内容:

[SYSTEM]:Do you have it in stock? 😊

我的要求是:

[SYSTEM]:Do you have it in stock?

你的正则表达式有两个错误:

  1. 不要将字符放在引号中,也不要用逗号分隔。
  2. 删除内部方括号。

并将右方括号放在列表的第一位,就在初始抑扬符之后。固定正则表达式:

UPDATE TEST set comments=REGEXP_REPLACE(comments,'[^]a-zA-Z0-9[:space:]&:/.?!]*',' ');

我的尝试,我只是删除了逗号,将 "accepted" 字符放在初始 "not" 之后(没有括号)。 一个特例是方括号:https://dba.stackexchange.com/a/109294/6228

select REGEXP_REPLACE(
         '[ION] are varză murată.',
         '[^][a-zA-Z0-9[:space:]&:/,.?!]+',
         ' ') 
from dual;

Result:
[ION] are varz  murat .