我有一个字符串'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;
答案 0 :(得分:1)
您可以使用
^([^.]*\.[^.]*\.)\d+(.*)
<小时/>
这是:
^ # start of the string
([^.]*\.[^.]*\.) # capture anything including the second dot
\d+ # 1+ digits
(.*) # the rest of the string up to the end
取而代之的是
$11$2
答案 1 :(得分:1)
您可以使用捕获组在稍后的替换字符串中引用周围的数字:
select REGEXP_REPLACE ('ABC.1.2.8', '([0-9])\.[0-9]+\.([0-9])', '\1.1.\2') from dual;