在每个第4个数字/数字Oracle 11G之后添加一个空格

时间:2015-05-17 11:24:38

标签: regex oracle oracle11g dbms-output

我试图在每个第4个数字/数字(不是字符)中获得一个空格。这就是我想出的:

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

结果:

NL 2345 7894  TUE

我真正想要的是什么:

NL 1234 5678 944 TUE

我的代码用空格键替换每第4位的数字,而不是像上面想要的结果那样添加空格。

任何人都可以向我解释这个吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

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

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

并替换你现在正在做的事情...... \1(space)

  

为什么你的不工作?

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

输入= NL 12345678944 TUE和正则表达式= [[:digit:]](....)的说明:

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

请参阅DEMO