如何替换除-(破折号)以外的特殊字符
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 自定义排序