【问题标题】:adding a space after each 4th number/digit Oracle 11G在每个第 4 个数字/数字后添加一个空格 Oracle 11G
【发布时间】:2015-07-28 23:08:00
【问题描述】:

我正在尝试在每 4 个数字/数字(不是字符)中添加一个空格。这是我想出的:

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

结果:

NL 2345 7894  TUE

我真正想要的:

NL 1234 5678 944 TUE

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

谁能给我解释一下?

提前致谢

【问题讨论】:

  • 原始输入是什么?
  • 原始输入是什么意思?想要的最终结果的输入还是我的整个代码?
  • 有点看到那个来了。 regexp_replce = 替换。但是那怎么加空格呢?
  • 是的..你展示了想要的结果和你得到的结果,但没有输入..
  • 也许我不完全理解你,但我在顶部得到了我的输入:newStudentNumber := regexp_replace(newStudentNumber, '[[:digit:]](....)' , '\1'); dbms_output.put_line(newStudentNumber);或者这不是你所说的?

标签: regex oracle oracle11g dbms-output


【解决方案1】:

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

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

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

为什么你的不工作?

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

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

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

DEMO

【讨论】:

  • 当我尝试您的解决方案时,我得到了这个: NL 944 TUE The value of newStudentNumber = NL 12345678944 TUE 我想将其更改为 NL 1234 5678 944 TUE
  • 您查看了演示吗?你用newStudentNumber := regexp_replace(newStudentNumber, '([[:digit:]]{4})', '\1 ');了吗?
  • 我查看了演示 ye。老实说,我不明白这一点,但无论如何感谢您提供该演示。我还要感谢您的解决方案。有用。非常感谢,我将您的 awnser 标记为正确的。欢呼
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多