目标:从电话.txt中提取全部的手机号码
方案一:
1.查出全部的包含要求内容的行单独显示
lvimgrep /\d\{11\}/ % |lopen
2.拷贝内容,剔除非要求内容部分
其中非要求内容部分:
2.1 文件头内容
%s/文件头//g
2.2 非数字部分
%s/\D//g
[popexizhi:\d为数字,\D为非数字字符]
2.3 数字但非电话部分
此部分分析应该在2.2前执行,否则无法区分
原始内容
%s/\d\{1,10\}/g
分为
2.3.1 字符间内容 %s/\D\d\{1,10\}\D/g
2.3.2 行开始%s/^\d\{1,10\}\D/g
2.3.3 行结束%s/\D\d\{1,10\}$/g
后来结果发现\D不包含空格,增加如下
2.3.4 前后空格
后来又发现一行中有多个号码,好吧,不改了,补丁太无穷了。想了方案二
方案二:
1.查出全部的包含要求内容前后添加换行,及查找结果单行显示:
%s/\d\{11\}/\r&\r/g
[popexizhi:确认了一下,vim使用&全文引用之前的查找结果]
2.查出全部的包含要求内容的行单独显示
lvimgrep /\d\{11\}/ % |lopen
3.拷贝内容,剔除文件头内容
后记:
重构的必要啊,可恨方案反思人啊!:)
没有评论:
发表评论