【问题标题】: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 删除除 - 之外的那些字符?

【问题讨论】:

    标签: sql postgresql 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 2016-12-21
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 2021-08-09
      相关资源
      最近更新 更多