如何替换除-(破折号)以外的特殊字符

Posted

技术标签:

【中文标题】如何替换除-(破折号)以外的特殊字符【英文标题】:How to replace special characters except - (dash) 【发布时间】:2020-02-26 10:08:56 【问题描述】:

使用 PGAdmin (Postgresql),我试图删除字段中除 - 之外的所有特殊字符。

当前正在使用的命令:

regexp_replace(b.DOWNCASE_NAME, '[^\w\s]', '', 'g') as CONDITION_NAME_DC,

这会将“卵巢支持细胞瘤”改为“卵巢支持细胞瘤”

我使用它是因为有些字段包含逗号、正斜杠,而我不需要这些。但是如何使用 regexp_replace 删除除 - 之外的那些字符?

【问题讨论】:

【参考方案1】:

您可以使用^- 排除模式中的-,如下所示

select regexp_replace('ova@ri/an serto#li-leydi!g cel/l tumor', '[^\w\s^-]', '', 'g') 

输出

ovarian sertoli-leydig cell tumor

Check demo here

【讨论】:

这很好用!谢谢!如果您不介意,我有一个后续问题。我注意到在我原来的 regexp_replace 命令中,它会正确地将cancer/brca1 变成cancer brca1。但对于卵巢支持细胞瘤,它会成为卵巢支持细胞瘤。为什么这个词将两个词合并在一起,而不是像我之前提到的那样在它们之间留一个空格? 是吗?对我来说select regexp_replace('cancer/brca1', '[^\w\s]', '', 'g') 是给cancerbrca1 - 没有空格【参考方案2】:

请尝试这样使用-

 preg_replace('/[^a-zA-Z0-9-]/', '', $yourString);

【讨论】:

以上是关于如何替换除-(破折号)以外的特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有编解码器值的 python .replace 来删除特殊字符?

带有特殊字符破折号 (-) 和下划线 (_) 的 Javascript 自定义排序

删除 Pandas 中字符串列中的 Dash/Dots 并将其替换为 Null

破折号是R正则表达式中的特殊字符吗?

如何在ColdFusion中访问包含特殊字符的变量名称

c#中 如何解决xml格式的字符串中特殊字符