如何使用模式进行 gsub

How to gsub using patterns

提问人:Ahmed Hassan 提问时间:3/7/2023 更新时间:3/7/2023 访问量:52

问:

我有一个列表 X,其元素名称如下

down_PK56c-t_S5_L001.clones_IGH

我想将元素重命名为这样

PK56c-t

如何使用 gsub 做到这一点? 我试过了这个,但没有用:/

gsub(".*[down_]([^.]+)[.].*", "\\1", "down_PK56c-t_S5_L001.clones_IGH")

多谢

r 字符串 数据帧 gsub

评论

1赞 DaveArmstrong 3/7/2023
这得到了你想要的.它假设您想要获取“down”后面的两个下划线字符之间的内容gsub("down_([^_]+)_.*", "\\1", "down_PK56c-t_S5_L001.clones_IGH")

答:

1赞 Wiktor Stribiżew 3/7/2023 #1

你需要一个喜欢这里sub

sub(".*down_([^_]+).*", "\\1", text)

请参阅正则表达式演示

细节

  • .*- 任何零个或多个字符
  • down_- 文字字符串
  • ([^_]+)- 第 1 组(指此组文本):下划线以外的一个或多个字符\1
  • .*- 任何零个或多个字符
1赞 GuedesBF 3/7/2023 #2

我们还可以使用一个策略来回顾:extract

library(stringr)

string <- "down_PK56c-t_S5_L001.clones_IGH"
str_extract(string, pattern = "(?<=down_)[^_]+")

[1] "PK56c-t"