【问题标题】:Oracle replace square brackets REGEX_REPLACEOracle 替换方括号 REGEX_REPLACE
【发布时间】:2019-06-23 11:53:02
【问题描述】:

我的一张表中有字符串,我需要在其中替换一些特殊字符,例如 ' _ ? ° 和方括号 [ ]。 当我尝试这个时,它会像预期的那样工作:

SELECT REGEXP_REPLACE('BIG''EAST_?°[]', '[_?°'']', ' ') FROM DUAL;

我明白了:

BIG EAST   []

然后我在我的正则表达式中添加方括号:

SELECT REGEXP_REPLACE('BIG''EAST_?°[]', '[_?°''\[\]]', ' ') FROM DUAL;

我预料到了:

BIG EAST

但我明白了:

BIG'EAST_?° 

如何正确转义正则表达式中的方括号?

【问题讨论】:

    标签: sql oracle regexp-replace


    【解决方案1】:

    您需要添加一个 * 来匹配您的模式中多次出现(并且以任何顺序)的字符

    SELECT REGEXP_REPLACE('BIG''EAST_?°[]', '[_?°''\[\]]*', ' ') FROM DUAL;
    

    【讨论】:

    • 它与样品和我的整张桌子完美配合,谢谢!现在,您的答案和 J.Lee 的答案是否有区别,性能方面也很完美?
    • @GuillaumeDeguines,我看不到那个答案了,好像它被删除了。
    • 他建议这样做:SELECT REGEXP_REPLACE('BIG''EAST_?°[]', '[_?°''\[]|\]', ' ') FROM DUAL;
    • @GuillaumeDeguines,我看不出有什么明显的原因可以说明为什么一个比另一个更快,因为它们非常相似。
    猜你喜欢
    • 2015-04-26
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2019-12-03
    • 1970-01-01
    • 2017-11-17
    相关资源
    最近更新 更多