2010-07-19 8 views
0

하이픈과 숫자로 마지막 숫자를 바꾸는 방법이 있습니까? 자리의 숫자에 대한 파일 다음 : AmarGhosh와마지막 숫자를 하이픈과 숫자로 바꾸는 정규식

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

나는이

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

내 업데이트를 참조하십시오. 'file02-02' 또는'file02-2'가되기를 원하십니까? 'file123'이 있다면 어떨까요? – Amarghosh

+0

예를 들어 file123은 file01이고 file02는 – Lisa

+0

입니다. 코드가 기대하는 것은 무엇입니까? 'file12' 나'foo1234'는 어떨까요? 샘플에는'/ file02-2'와'file02-02'가 둘 다 있습니다. 일반적으로 가능한 한 많은 입력에 대해 코드가 올바르게 작동하기를 원합니다. – Kobi

답변

3

/file0\1-\1/

업데이트와 ^/file0([12])/ 교체 해결

교체 와 ^/file([0-9]+)/ 업데이트-2

/file\1-\1/ : /file\1-\1

^/file([0-9]+) 교체 /file-01

의 수에 대한 한 줄 때문에 당신의 정규식이 두 번째 file01가 일치하지 않습니다의 시작과 일치 - 단지 수를 그것을 없애라.

+0

예제에서 괄호는 0을 따라 가야한다고 생각합니다. 파일 – bluesmoon

+0

죄송합니다. 나는 두 번째 행을/file02/another/file02/file02로 바꾸고 싶습니다. -2/another/file02 – Lisa

+0

@bluesmoon 예, 업데이트되었습니다. '$ 1'을'\ 1'로 변경했습니다. – Amarghosh

관련 문제