Chinaunix

标题: 关于VIM正则表达式替换的问题 [打印本页]

作者: zrp999    时间: 2010-03-26 15:16
标题: 关于VIM正则表达式替换的问题
各位好,在工作中遇到一些VIM问题,本人这方面初学所以技术层面薄弱,想请教以下问题:

'"脊髓减压','植骨术"'

如何在全文替换成:

'脊髓减压,植骨术'

大家给出答案的话麻烦解释下,万分感谢。
作者: blackold    时间: 2010-03-26 15:18
不知道你的具体情况。
:%s/'"脊髓减压','植骨术"'/'脊髓减压,植骨术'/g

外科?
作者: zrp999    时间: 2010-03-26 15:34
谢谢楼上,我没把问题说请楚,在替换时 脊髓减压,植骨术 中文字体不确定,只知道这些描述中间可能有一个逗号,目前这个逗号替换成',' 把一条插入的SQL分隔成2个字段,所以想把每一行中文中包含','的都替换成逗号,例如
values(t_dvr_coderecords_seq.nextval,'神经系统手术','01.248','"颅内减压','小脑扁桃体复位术"','303');

结果:

values(t_dvr_coderecords_seq.nextval,'神经系统手术','01.248','颅内减压,小脑扁桃体复位术','303');
作者: blackold    时间: 2010-03-26 15:47
中文问题涉及到编码问题。

你可以试试:
:%s/\([^\x00-\x7f]\)','\([^\x00-\x7f]\)/\1,\2/g
作者: zrp999    时间: 2010-03-26 16:40
我刚执行了您给的表达式,替换可以执行,但结果和原来的一样,我换个角度描述一下,假如有以下字符串:

"您好','黑哥"

需要替换为:

"您好,黑哥"
作者: blackold    时间: 2010-03-26 17:18
本帖最后由 blackold 于 2010-03-26 17:21 编辑

回复 5# zrp999


    是什么环境啊?
    我刚才测试过了,对于你给出的文本是可行的。

你也可以试试:
:%s/\([^0-9A-Za-z]\)','\([^0-9A-Za-z]\)/\1,\2/g




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2