我试图在每个第4个数字/数字(不是字符)中获得一个空格。这就是我想出的:
newStudentNumber := regexp_replace(newStudentNumber, '[[:digit:]](....)', '\1 ');
dbms_output.put_line(newStudentNumber);
结果:
NL 2345 7894 TUE
我真正想要的是什么:
NL 1234 5678 944 TUE
我的代码用空格键替换每第4位的数字,而不是像上面想要的结果那样添加空格。
任何人都可以向我解释这个吗?
提前致谢
答案 0 :(得分:2)
您可以使用以下正则表达式。
([[:digit:]]{4})
并替换你现在正在做的事情...... \1(space)
为什么你的不工作?
你的正则表达式匹配一个数字并捕获接下来的4个字符(不仅仅是数字)。所以..当你做一个替换..匹配但未捕获的数字也被替换..而不是因为它无法插入。
输入= NL 12345678944 TUE
和正则表达式= [[:digit:]](....)
的说明:
NL 12345678944 TUE (it will match digit "1" and captures "2345")
请参阅DEMO