首页 > 解决方案 > 从文件名+1字符中提取字符

问题描述

我希望能够从文件名中提取字符。我想提取 B+1 字符

df <- c("2010-01-14_B1_RP_NEG_09.mzML","2010-01-14_B1_RP_NEG_10.mzML","2010-01-15_B2_RP_NEG_11.mzML","2010-01-15_B2_RP_NEG_12.mzML", "2010-01-16_B3_RP_NEG_13.mzML", "2010-01-16_B3_RP_NEG_14.mzML")
df

可以通过以下方式完成:

substring(df,12,13)

但是在长文件名中,知道如何提取 B+1 字符会很方便。此代码提取 B 之后的字符。

substring(df, regexpr("B", df)+1)

它应该看起来像

B1, B1, B2, B2, B3, B3

有什么好的建议吗?:)

标签: rregex

解决方案


使用sub我们可以提取“B”后跟一个数字。

sub(".*(B\\d+).*", "\\1", df)
#[1] "B1" "B1" "B2" "B2" "B3" "B3"

或与str_extract

stringr::str_extract(df, "B\\d+")

推荐阅读