热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在某个模式之前设置字符串的一部分

如何解决《在某个模式之前设置字符串的一部分》经验,为你挑选了1个好方法。

我的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个带括号的子表达式匹配的子字符串.


推荐阅读
author-avatar
更东陌飞絮蒙蒙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有