MAP*_*APK 3 string r pattern-matching
我有这个矢量叫myvec.我想_用" -" 替换每个元素中的前两个点(如果存在之前).如何在R中执行此操作并获得结果?
myvec <- c("SKDP.209.3_C4UAMACXX.7.04.ReCal.sort.bam", "SKDP.97.1_C4UAMACXX.7.12.ReCal.sort.bam",
"SKDP972_C4UAMACXX.7.13.ReCal.sort.bam")
Run Code Online (Sandbox Code Playgroud)
结果
SKDP-209-3_C4UAMACXX.7.04.ReCal.sort.bam, SKDP-97-1_C4UAMACXX.7.12.ReCal.sort.bam,
SKDP972_C4UAMACXX.7.13.ReCal.sort.bam
Run Code Online (Sandbox Code Playgroud)
我们可以试试gsub.使用捕获组,即放置在(...)其中的字符,检查另外一个不是a .(([^.]+))的字符,然后是一个点(\\.因为.是一个可以匹配任何字符的元字符,我们需要转义它),然后是另一组捕获组这不是一个点后跟点,然后是第三个捕获组,其中包括一个或多个不是_后跟a _(([^_]+_)的字符,其余字符直到字符串(.*)的末尾,并替换为后向引用捕获组,即\\1第一个,-然后是第二个反向引用...
gsub("^([^.]+)\\.([^.]+)\\.([^_]+_.*)", "\\1-\\2-\\3", myvec)
#[1] "SKDP-209-3_C4UAMACXX.7.04.ReCal.sort.bam"
#[2] "SKDP-97-1_C4UAMACXX.7.12.ReCal.sort.bam"
#[3] "SKDP972_C4UAMACXX.7.13.ReCal.sort.bam"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31 次 |
| 最近记录: |