我有一个文件,其中一些单词用逗号分隔。我想删除其中一个单词,同时保持正确的逗号结构。
示例:
dan,brian,max
brian,dan,max
brian,max,dan
如果“dan”在行的开头,则应取出后续逗号。 如果他在线的中间,应该取出其中一个逗号。 如果他在行尾,则应取出前面的逗号。
所以最终输出是:
brian,max
brian,max
brian,max
到目前为止,我已经完成了两个正则表达式,但我确信有一种方法可以在一行中完成。
%s/^\@!\(,\)\?dan\(,\)\?/\2/ | %s/^dan,//
可以这样做,但在我看来,这就像是一种迂回的方式。
%s/^\@!\(,\)\?dan\(,\)\?\|^\(dan,\)/\2
答案 0 :(得分:4)
你需要的正则表达式只是:
^dan,|,dan\b
请参阅live demo
诀窍是捕获中间案例的前导逗号,使其与中间和最终案例相同。
作为替换命令:
%s/^dan,\|,dan\>//g
注意:如果vim不支持单词边界\b
,请将其删除
答案 1 :(得分:2)
你也可以试试这个,
%s/\<dan,\|,dan$//g
答案 2 :(得分:0)
re.sub(r"[,]+dan|dan[,]+","",x)
用空白代替丹。