regex 替换路径名字符串列表中的前导句点(“.”)+ R

blpfk2vs  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(93)

我 需要 替换 路径 名 字符 串 列表 中 的 第 一 个 句点 ( " . " ) , 我 知道 我 应该 可以 用 regex 来 做 这 件 事 , 但 找 不到 一 个 好 的 例子 。
以下 是 路径 名 的 示例 :

paths <- c("/Users/user/Study/data/ARaw_Sequences/16S_raw_sequences/RemovePrimer_Final.274571-3-2022_1.fq.gz", 
"/Users/user/Documents/R/Study/data/Raw_Sequences/16S_raw_sequences/RemovePrimer_Final.274575-15-2022_1.fq.gz")

中 的 每 一 个
我 需要 替换 Final 和 id 代码 27... 之间 的 句点 , 这样 它 就 像 这样 结束 了 -

RemovePrimer_Final_274575-15-2022_1.fq.gz

格式

xwbd5t1u

xwbd5t1u1#

basename()将从您的文件路径返回文件名,我们可以使用sub()仅替换第一个“.”字符。

paths <- c("/Users/user/Study/data/ARaw_Sequences/16S_raw_sequences/RemovePrimer_Final.274571-3-2022_1.fq.gz", 
           "/Users/user/Documents/R/Study/data/Raw_Sequences/16S_raw_sequences/RemovePrimer_Final.274575-15-2022_1.fq.gz")

sub("\\.", "_", basename(paths))
#> [1] "RemovePrimer_Final_274571-3-2022_1.fq.gz" 
#> [2] "RemovePrimer_Final_274575-15-2022_1.fq.gz"

创建于2022年11月10日,使用reprex v2.0.2

  • edit* 删除basename()会将完整路径中的.“”替换为“_”。
paths <- c("/Users/user/Study/data/ARaw_Sequences/16S_raw_sequences/RemovePrimer_Final.274571-3-2022_1.fq.gz", 
           "/Users/user/Documents/R/Study/data/Raw_Sequences/16S_raw_sequences/RemovePrimer_Final.274575-15-2022_1.fq.gz")

sub("\\.", "_", paths)
#> [1] "/Users/user/Study/data/ARaw_Sequences/16S_raw_sequences/RemovePrimer_Final_274571-3-2022_1.fq.gz"            
#> [2] "/Users/user/Documents/R/Study/data/Raw_Sequences/16S_raw_sequences/RemovePrimer_Final_274575-15-2022_1.fq.gz"

双斜线是必需的,所以R查找.字符。否则,带有.“”的正则表达式将匹配任何字符。反斜线让我们转义这种匹配并返回我们想要的显式匹配。

相关问题