[英]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.