目前我得到一個很長的輸入字符串,我想通過regexp_replace反向。通常我使用這個(從PL/SQL的開始子句中)替換字符串位置Oracle中對Regep_replace有組限制嗎? (與regexp_replace問題)
variable:= regexp_replace(variable, '(.+) (.+) (.+) (.+)', '\4 \3 \2 \1');
在這種情況下我variabele會以相反的順序進行更換,和它的作品。現在我的問題和我的問題是。製作小組是否有限制?因爲我也有這個字符串:
US 816909877808647715885542447721 UOPX
我把這個字符串作爲輸入到我的功能和作用開始改變這個字符串。在某個時候,它會使四人組(也在工作)。爲此,我現在用的是以下幾點:
variable:= regexp_replace(variable, '(....)', '\1 ');
導致下一輸出:
3630 3139 3634 8169 0987 7808 6477 1588 5542 4477 21 -- also did ASCII to number
所以此刻我得到了我想要的東西。整個琴絃被分成四組。但現在我的問題是,當我要扭轉這些11組使用此代碼:
convertedStudentNumber := regexp_replace(convertedStudentNumber, '(.+) (.+) (.+) (.+) (.+) (.+) (.+) (.+) (.+) (.+) (.+)', '\11 \10 \9 \8 \7 \6 \5 \4 \3 \2 \1');
這是我的結果:
36301 36300 5542 1588 6477 7808 0987 8169 3634 3139 3630
,當我不逆轉與9組如下組:
variable:= regexp_replace(variable, '(.+) (.+) (.+) (.+) (.+) (.+) (.+) (.+) (.+)', '\9 \8 \7 \6 \5 \4 \3 \2 \1');
這是我的結果:
21 4477 5542 1588 6477 7808 0987 8169 3630 3139 3634
與我得到的9組更接近我想要實現的。但最後三組仍然無法用一種奇怪的方式修復。
21 4477 5542 1588 6477 7808 0987 8169 [3630 3139 3634]--won't work.
總之。這是我的字符串,我想通過組
3630 3139 3634 8169 0987 7808 6477 1588 5542 4477 21
扭轉,但我並不比
21 4477 5542 1588 6477 7808 0987 8169 [3630 3139 3634]
這似乎不是重複給我。我認爲問題是要求解決問題的幫助,而不僅僅是「Oracle反向引用只能達到9」。 –
也許你可以將你的字符串分成一組四個和一組五個,每組反轉一組,然後按照相反的順序將組合回去?否則,您可以將其標記並將它們重新排列在一起。 –
@AlexPoole,我打算提出類似的解決方案,但不能解決問題。 –