给出以下电话号码列表
8144658695
812 673 5748
812 453 6783
812-348-7584
(617) 536 6584
834-674-8595
编写一个正则表达式(在loki上使用vim)重新格式化数字,使它们看起来像这样
814 465 8695
812 673 5748
812 453 6783
812 348 7584
617 536 6584
834 674 8595
我正在使用搜索和替换命令。我的正则表达式使用反向引用:
:%s/\(\d\d\d\)\(\d\d\d\)\(\d\d\d\d\)/\1 \2 \3\g
仅格式化第一行。 有什么想法吗?
答案 0 :(得分:1)
试试这个:
:%s,.*\(\d\d\d\).*\(\d\d\d\).*\(\d\d\d\d\).*,\1 \2 \3,
答案 1 :(得分:1)
首先使用count来多次匹配一个模式,重复模式是一个不好的习惯:
\d\{3} "instead of \d\d\d
比你还必须匹配空格等:
:%s/.*\(\d\{3}\).*\(\d\{3}\).*\(\d\{4}\).*/\1 \2 \3/g
甚至更好,用\v
逃避整个正则表达式:
:%s/\v.*(\d{3}).*(\d{3}).*(\d{4}).*/\1 \2 \3/g
这极大地提高了可读性