我有以下文字:
//@A:Good!//@B: Wow!//@C: How come?@D//@E:
//@A:Good!//@B: Wow!//@C: How come?@D//
我想只删除此字符串中的//
如果没有与之关联的@
。
我想要的输出是:
//@A:Good!//@B: Wow!//@C: How come?@D//@E:
//@A:Good!//@B: Wow!//@C: How come?@D
答案 0 :(得分:3)
答案 1 :(得分:2)
您可以使用捕获组并使用反向引用替换。这样,您甚至不需要指定perl=T
:
str <- '//@A:Good!//@B: Wow!//@C: How come?@D//@E: //@A:Good!//@B: Wow!//@C: How come?@D//'
gsub('//([^@]|$)', '\\1', str)
模式说明:
//
- 2个字面斜线 ([^@]|$)
- 捕获与非@
([^@]
)或字符串$
的结尾匹配的第1组。
\\1
- 是对捕获的组内容的反向引用,将其重新放回替换后的字符串中。
demo program的输出:
[1] "//@A:Good!//@B: Wow!//@C: How come?@D//@E: //@A:Good!//@B: Wow!//@C: How come?@D"
答案 2 :(得分:0)