【发布时间】:2020-02-22 05:00:30
【问题描述】:
努力想出一个删除字符串中重复字符的正则表达式(即只保留第一次出现的字符)
特别是我想在第一次出现后删除所有冒号
s <- c("note: conducted by j:m",
"location: made :n :apan",
"date: 2010, ma: 3rd")
成为
note: conducted by jm
location: made in apan
date: 2010, ma 3rd
我能做到的最好是
library(stringr)
str_remove(string = s, pattern = "(?<=:)(.*?):(.*)")
# [1] "note:" "location:" "date:"
编辑:
我能得到的第二好的是"(:)(?=.*\1)" on regex.com - 它可以识别除最后一个 : 之外的所有内容(这与我想要的相反)但在 R 中不起作用,不知道为什么?
str_remove(string = s, pattern = "(:)(?=.*\1)")
# [1] "note: conducted by j:m" "location: made :n :apan" "date: 2010, ma: 3rd"
【问题讨论】: