正则表达式用连字符和数字替换最后一位数字

时间:2010-07-19 06:22:42

标签: regex oracle

有没有办法用连字符和数字替换最后一位数字。

original            needs to be replaced with
file01              file01-01
file02              file02-02

AmarGhosh我解决了这个问题

with names as
(
select '/file01/some/file01' name from dual
union all
select '/file02/another/file02' name from dual
)
select name,regexp_replace(name, '^/file0([1-9]+)','/file0\1-\1') new

NAME                      NEW
------------------------- -------------------------
/file01/some/file01       /file01-1/some/file01
/file02/another/file02    /file02-2/another/file02

由于 感谢

1 个答案:

答案 0 :(得分:3)

^/file0([12])/替换为/file0\1-\1/

更新:对于文件后的任意位数:

^/file([0-9]+)/替换为/file\1-\1/

更新-2:任意数量的/file-01

/file([0-9]+)替换为/file\1-\1

^匹配一行的开头,因此你的正则表达式与第二个file01不匹配 - 只是摆脱它。