2015-05-17 82 views
2

後加空格,我試圖讓一個空間分成每4個數字/數字(不是字符)。這就是我想出:每4號/位的Oracle 11g

newStudentNumber := regexp_replace(newStudentNumber, '[[:digit:]](....)', '\1 '); 
    dbms_output.put_line(newStudentNumber); 

結果:

NL 2345 7894 TUE 

我真正想要的:

NL 1234 5678 944 TUE 

我的代碼替換數在與空格鍵每4個地方,而不是增加一個像上面想要的結果一樣的空間。

任何人都可以解釋這一點嗎?

在此先感謝

+0

是什麼原始輸入? –

+0

你對原始輸入有什麼意思?想要的最終結果或我的整個代碼的輸入? –

+0

有點看到一個人在你身邊。 regexp_replce =替換。但是如何增加空間呢? –

回答

2

您可以使用以下正則表達式..

([[:digit:]]{4}) 

並與你現在正在做什麼替代.. \1(space)

爲什麼你不工作?

您的正則表達式匹配一個數字並捕獲下4個字符(不僅是數字)。所以..當你做一個替換..匹配但沒有捕獲的數字也被替換..而不是因爲它無法插入。

輸入= NL 12345678944 TUE和正則表達式說明= [[:digit:]](....)

NL 12345678944 TUE (it will match digit "1" and captures "2345") 

DEMO

+0

當我想你的解決方案,我得到這個: NL 944 TUE 的價值newStudentNumber = NL 12345678944 TUE,我想改變這種狀況,以NL 1234 5678 944 TUE –

+0

你檢查的演示?您使用了'newStudentNumber:= REGEXP_REPLACE(newStudentNumber, '([[:位:]] {4})', '\ 1');'? –

+0

我檢出了演示。我真的不明白,但謝謝你提供這個演示。我也想感謝你的解決方案。有用。非常感謝,我標記你的awnser是正確的。歡呼聲 –