目前我得到一个很长的输入字符串,我想通过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,我打算提出类似的解决方案,但不能解决问题。 –