繁体   English   中英

Oracle SQL REGEXP_REPLACE表达式替换与模式匹配的字符串中的数字

[英]Oracle sql REGEXP_REPLACE expression to replace a number in a string matching a pattern

我有一个字符串“ ABC.1.2.3”,我希望将中间数字替换为1。

Input 'ABC.1.2.3'
Output 'ABC.1.1.3'

Input 'XYZ.2.2.1'
Output 'XYZ.2.1.1'

是的,第二次出现“。”后替换数字。 与1。

我知道我的模式是错误的,此刻我拥有的sql是:

select REGEXP_REPLACE ('ABC.1.2.8', '(\.)', '.1.') from dual;

你可以用

^([^.]*\.[^.]*\.)\d+(.*)

参见regex101.com上的演示


这是:

$11$2

替换为

 $11$2 

稍后,您可以使用捕获组来引用替换字符串中的周围数字:

select REGEXP_REPLACE ('ABC.1.2.8', '([0-9])\.[0-9]+\.([0-9])', '\1.1.\2') from dual;

暂无
暂无

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

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