我有一個字符串以下列表:更換部分
name <- c("hsa-miR-555p","hsa-miR-519b-3p","hsa-let-7a")
我想要做的就是上述每個串 的更換第二分隔符之後的文本( - )用「 ZZZ」。 產量:
hsa-miR-zzz
hsa-miR-zzz
hsa-let-zzz
這是怎麼回事?
我有一個字符串以下列表:更換部分
name <- c("hsa-miR-555p","hsa-miR-519b-3p","hsa-let-7a")
我想要做的就是上述每個串 的更換第二分隔符之後的文本( - )用「 ZZZ」。 產量:
hsa-miR-zzz
hsa-miR-zzz
hsa-let-zzz
這是怎麼回事?
也許是這樣的:
> gsub("([A-Za-z]+-)([A-Za-z]+-)(.*)", "\\1\\2zzz", name)
[1] "hsa-miR-zzz" "hsa-miR-zzz" "hsa-let-zzz"
實際上,有幾種方法可以解決這個,這取決於你的表情實際上是如何「正規」的。例如,他們是否都以「hsa-」開頭? 「中間」組有什麼選擇?可能會有三個以上的破折號?
還不如使用這樣的:
gsub("^((?:[^-]*-){2}).*", "\\1zzz", name)
(?:[^-]*-)
是一個非捕獲基團,其由幾個非破折號字符,隨後是單個連字符和{2}
剛過意味着只有兩次出現此組。然後,與替代品的其他一切相匹配。注意我使用了一個錨以防萬一以避免意外的替換。