如何使用正则表达式从字符串中除去第一场比赛之外的所有字符实例?在下面的示例数据中,我想保留第一个' - '并删除所有其他实例。
myvec <- c("12-34-5678-9", "ABC-DEF-GHI-JKL-MN", "9-8765", "a - defgh -- ijkl")
寻求的结果是:
"12-3456789" "ABC-DEFGHIJKLMN" "9-8765" "a - defgh ijkl"
我使用strsplit
制定了一个解决方案并使用paste
重建了这些向量,但我正在寻找一种正则表达式来满足我的好奇心。
答案 0 :(得分:2)
您可以使用捕获组。
> myvec <- c("12-34-5678-9", "ABC-DEF-GHI-JKL-MN", "9-8765", "a - defgh -- ijkl")
> gsub("^([^-]*-)|-", "\\1", myvec)
[1] "12-3456789" "ABC-DEFGHIJKLMN" "9-8765"
[4] "a - defgh ijkl"
答案 1 :(得分:2)
试试这个
gsub('^[^-]+-(*SKIP)(*F)|-', '', myvec, perl=TRUE)
#[1] "12-3456789" "ABC-DEFGHIJKLMN" "9-8765" "a - defgh ijkl"