在阅读本书" 掌握正则表达式"时,我试图解决" commafication"使用vim编辑器的数字。
如何从以下文件中转换文件中的数字:
1234567891234
到
1,234,567,891,234
(这是一个数字的命名)
使用环视有一个解决方案,但我试图在不使用它的情况下解决它。不幸的是,我仍然没有提出正确的命令,这就是我在这里的原因。 这是我的命令,直到现在:
:%s/\(\d\)\(\(\d\d\d\)\+\)/\1,\2/gc
产生:
1,234567891234
问题在于\+
需要最长链。我怎样才能为链的其余部分重复这一点?
答案 0 :(得分:1)
在vim
中,您可以使用此正则表达式在每3个数字后插入逗号:
:%s/\v(^)@!((\d{3})+$)@=/,/g
这假设每个数字都在一个单独的行上。
如果每行有多个号码,请使用:
:%s/\v(<)@!((\d{3})+>)@=/,/g
PS:在VIM - Vi IMproved 7.2
和VIM - Vi IMproved 7.4