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+(.*)
这是:
^ # start of the string
([^.]*\.[^.]*\.) # capture anything including the second dot
\d+ # 1+ digits
(.*) # the rest of the string up to the end
这被替换为
稍后您可以使用捕获组来引用替换字符串中周围的数字:
select REGEXP_REPLACE ('ABC.1.2.8', '([0-9])\.[0-9]+\.([0-9])', '.1.') from dual;
我有一个字符串'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+(.*)
这是:
^ # start of the string
([^.]*\.[^.]*\.) # capture anything including the second dot
\d+ # 1+ digits
(.*) # the rest of the string up to the end
这被替换为
稍后您可以使用捕获组来引用替换字符串中周围的数字:
select REGEXP_REPLACE ('ABC.1.2.8', '([0-9])\.[0-9]+\.([0-9])', '.1.') from dual;