繁体   English   中英

regexp_replace 模式中的方括号

[英]Square bracket in regexp_replace pattern

我想将REGEXP_REPLACE与此模式一起使用。 但我不知道如何在方括号中添加方括号。 我尝试输入转义字符,但我没有工作。 在此屏幕截图中,我还想保留 [XXX] 这些方括号。 我需要以某种方式在我的模式中添加这个方括号。 谢谢。

现在 output 是这样的:

MSD_40001_ME_SPE__XXXX__Technical__Specification_REV9_(2021_05_27)_xls

但我想这样:

MSD_40001_ME_SPE_[XXXX]_Technical__Specification_REV9_(2021_05_27)_xls

在此处输入图像描述

我尝试了转义字符\但它没有用

你可以试试这个正则表达式模式: [^][a-z_A-Z0-9()]

    SELECT REGEXP_REPLACE('MSD_40001_ME_SPE_[XXXX]_Technical_%Specification_REV@9_(2021_05_27)_xls', '[^][a-z_A-Z0-9()]', '_')
    FROM DUAL

要在括号表达式中指定右括号 (]),请将其放在列表的首位(在初始抑扬符 (^) 之后,如果有的话)。

在这里看演示

来自 Regexp.Info,

一个关键的语法差异是反斜杠不是 POSIX 括号表达式中的元字符。 所以在 POSIX 中,正则表达式 [\d] 匹配一个 \ 或一个 d。 要匹配 ],请将其作为开头 [ 或否定 ^ 之后的第一个字符。 要匹配 -,请将其放在结束 ] 之前。 要匹配 ^,请将其放在最终文字 - 或结束 ] 之前。 放在一起,[]\d^-] 匹配 ], , d, ^ 或 -。

这种对问题的不同看法怎么样? 匹配以下一项或多项:空格或破折号或百分号或美元符号或符号或句点(转义具有特殊正则表达式含义的字符)并替换为下划线。 请注意,这会处理“技术”之后的双下划线。

with tbl(data) as (
  select 'MSD 40001-ME-SPE-[XXXX] Technical%$Specification@REV9 (2021.05.27).xls' from dual
)
select regexp_replace(data, '( |\-|%|\$|@|\.)+', '_') fixed
from tbl;

FIXED                                                                
---------------------------------------------------------------------
MSD_40001_ME_SPE_[XXXX]_Technical_Specification_REV9_(2021_05_27)_xls

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM