如何编写正则表达式替换两个连字符之间的任意类型字符
适配全字符场景的正则写法
你只需要将原来匹配大写字母的规则替换为匹配除分隔符-之外的所有字符即可,兼容所有数字、空格、特殊字符、德语变音字符等场景,代码如下:
select regexp_replace('002 - KLAMPFER - Sy 52-5-5+L', '- [^-]* -', '- XXXXXXX -') from dual;
规则说明
[^-]匹配除减号-之外的所有字符,自动覆盖全类型字符- 该规则不依赖惰性匹配特性,适配绝大多数支持
regexp_replace的SQL方言(如Oracle、PostgreSQL等),匹配时只会匹配两个-分隔符之间的内容,不会错误吞掉后续的减号内容
测试示例
如果输入包含德语特殊字符、数字、特殊符号:
select regexp_replace('002 - Müller 123!@# 测试 - Sy 52-5-5+L', '- [^-]* -', '- XXXXXXX -') from dual;
输出结果:
002 - XXXXXXX - Sy 52-5-5+L
内容的提问来源于stack exchange,提问作者user2795318
相关产品推荐
相关产品推荐

