Regex 在Oracle 11G的每个第四个数字/数字后添加空格

Regex 在Oracle 11G的每个第四个数字/数字后添加空格,regex,oracle,oracle11g,dbms-output,Regex,Oracle,Oracle11g,Dbms Output,我试图在每个第四个数字(不是字符)中留出一个空格。这就是我想到的: newStudentNumber := regexp_replace(newStudentNumber, '[[:digit:]](....)', '\1 '); dbms_output.put_line(newStudentNumber); 结果: NL 2345 7894 TUE 我真正想要的是: NL 1234 5678 944 TUE 我的代码用空格键替换每四个位置的数字,而不是像上面想要的结果那样添加空

我试图在每个第四个数字(不是字符)中留出一个空格。这就是我想到的:

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

NL 2345 7894  TUE
我真正想要的是:

NL 1234 5678 944 TUE
我的代码用空格键替换每四个位置的数字,而不是像上面想要的结果那样添加空格

谁能给我解释一下吗


提前感谢

您可以使用以下正则表达式

([[:digit:]]{4})
用你现在正在做的来代替<代码>\1(空格)

为什么你的不起作用

您的正则表达式匹配一个数字并捕获接下来的4个字符(不仅仅是数字)。所以当你做一个替换的时候。。匹配但未捕获的数字也会被替换。。并不是因为它无法插入

输入解释=
NL 12345678944 TUE
和正则表达式=
[[:digit:][](..)


参见

原始输入是什么?原始输入是什么意思?输入想要的最终结果还是我的全部代码?有点像是看到了一个。regexp\u replce=replace。但是如何添加一个空格呢?是的。。您显示了想要的结果和您得到的结果,但没有显示输入..也许我不完全理解您的意思,但我在顶部得到了我的输入,即:newStudentNumber:=regexp_replace(newStudentNumber,[[:digit:]](..),\1');dbms_output.put_行(newStudentNumber);或者这不是你想要的吗?当我尝试你的解决方案时,我得到了:NL 944 TUE newStudentNumber=NL 123456788944 TUE的值,我想将其更改为NL 1234 5678 944 TUE你检查演示了吗?您是否使用了
newStudentNumber:=regexp_replace(newStudentNumber',([[:digit:]{4}'),\1')?我查看了演示。我真的不明白这一点,但无论如何还是要感谢您提供的演示。我还要感谢你的解决方案。它起作用了。非常感谢,我将您的awnser标记为正确的。干杯
NL 12345678944 TUE   (it will match digit "1" and captures "2345")