删除/替换特殊字符,例外
Posted
技术标签:
【中文标题】删除/替换特殊字符,例外【英文标题】:Remove / Replace special characters, with exception 【发布时间】:2021-08-09 01:16:52 【问题描述】:我有一个字符串,我想删除所有特殊字符,包括空格。除了,如果它存在于字符串中,我想留下冒号。
我正在使用它,它有点工作,但似乎没有替换括号、反斜杠或破折号......
TRIM(REGEXP_REPLACE(REPLACE(REGEXP_REPLACE(c.category_name,'[^:^0-9A-Za-z ]',''),' : ','|'), '\s+', '_', 'g'))
请指教
【问题讨论】:
外部REGEXP_REPLACE
或TRIM
与这个问题有什么相关性?这个问题不就是REGEXP_REPLACE(c.category_name,'[^:^0-9A-Za-z ]','')
吗?
【参考方案1】:
您可以将冒号添加到允许的字符列表中
[^0-9A-Za-z:]
:任何不是数字、字母或冒号的东西。'g'
:根据需要多次应用替换(否则它会在第一次停止)
select REGEXP_REPLACE('0.1[2]?ab cd:ef g&*(h)/ij;','[^0-9A-Za-z:]','','g');
regexp_replace
----------------
012abcd:efghij
【讨论】:
非常感谢大家。其中多个似乎正在工作!非常感谢。【参考方案2】:您缺少 'g'
("global") 标志,因此只有 第一个 不需要的字符被删除(替换为空白)。
变化:
REGEXP_REPLACE(c.category_name, '[^:^0-9A-Za-z ]', '')
到:
REGEXP_REPLACE(c.category_name, '[^:0-9A-Za-z ]', '', 'g')
注意:我从正则表达式中删除了多余的 ^
,但如果您也想保留 ^
字符,请将其保留。
【讨论】:
以上是关于删除/替换特殊字符,例外的主要内容,如果未能解决你的问题,请参考以下文章