2

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

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

结果:

NL 2345 7894  TUE

我真正想要的:

NL 1234 5678 944 TUE

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

谁能给我解释一下?

提前致谢

4

1 回答 1

3

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

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

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

为什么你的不工作?

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

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

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

演示

于 2015-05-17T11:39:23.403 回答