作者:更东陌飞絮蒙蒙 | 来源:互联网 | 2022-12-10 12:56
我的row.names看起来像这样:
输入:
S1_S2_S3_S9_AAACTGATFSRYB
S3_S4_S12_S1_TTTTTTGATFSRYB
S9_S4_S12_S1_S2_S19_S22_GTGTTTGATFSRYB
我想要以下内容:
S9_AAACTGATFSRYB
S1_TTTTTTGATFSRYB
S22_GTGTTTGATFSRYB
换句话说,我想在字母开始之前只保留最后一个S*.我有6000行
任何人都可以帮我写一个gsub或类似的东西来提取我需要的字符串吗?
1> TC Zhang..:
试试这个
a =c(
"S1_S2_S3_S9_AAACTGATFSRYB",
"S3_S4_S12_S1_TTTTTTGATFSRYB",
"S9_S4_S12_S1_S2_S19_S22_GTGTTTGATFSRYB"
)
gsub("^.*_(.*_.+)$","\\1",a)
#> [1] "S9_AAACTGATFSRYB" "S1_TTTTTTGATFSRYB" "S22_GTGTTTGATFSRYB"
由reprex包创建于2018-07-18 (v0.2.0.9000).
编辑:在正则表达式上添加说明:
^.*_
匹配从start(^
)到最后一个下划线的字符串
(.*_.+)
匹配字符串与下划线,结合第一部分,它将匹配最后一个下划线和周围环境,这是我们想要的.
()
并且\1
:
反向引用\ N,其中N = 1 ... 9,匹配先前由正则表达式的第N个带括号的子表达式匹配的子字符串.