gpt4 book ai didi

regex - R-正则表达式提取破折号和句点之间的字符串

转载 作者:行者123 更新时间:2023-12-04 22:44:02 24 4
gpt4 key购买 nike

首先,如果这个问题太幼稚或之前已重复,我深表歉意。我试图在论坛中找到它,但我将其作为问题发布,因为我找不到答案。

我有一个列名的数据框,如下所示;

head(rownames(u))

[1] "A17-R-Null-C-3.AT2G41240" "A18-R-Null-C-3.AT2G41240" "B19-R-Null-C-3.AT2G41240"
[4] "B20-R-Null-C-3.AT2G41240" "A21-R-Transgenic-C-3.AT2G41240" "A22-R-Transgenic-C-3.AT2G41240"

我想要的是在 R 中使用正则表达式来提取第一个破折号和最后一个句点之间的字符串。

预期的结果是,
[1] "R-Null-C-3"       "R-Null-C-3"         "R-Null-C-3"      
[4] "R-Null-C-3" "R-Transgenic-C-3" "R-Transgenic-C-3"

我尝试跟随但没有运气......
gsub("^[^-]*-|.+\\.","\\2", rownames(u))
gsub("^.+-","", rownames(u))
sub("^[^-]*.|\\..","", rownames(u))

有人能帮我解决这个问题吗?

非常感谢。

沙尼。

最佳答案

这是与 gsub 一起使用的解决方案:

v <- c("A17-R-Null-C-3.AT2G41240", "A18-R-Null-C-3.AT2G41240", "B19-R-Null-C-3.AT2G41240", "B20-R-Null-C-3.AT2G41240", "A21-R-Transgenic-C-3.AT2G41240", "A22-R-Transgenic-C-3.AT2G41240")
gsub("^[^-]*-([^.]+).*", "\\1", v)

IDEONE demo

regex matches :
  • ^[^-]* - 除 - 之外的零个或多个字符
  • - - 连字符
  • ([^.]+) - 第 1 组匹配并捕获一个或多个除点以外的字符
  • .* - 任何字符(甚至包括换行符,因为 perl=T 没有被使用),直到字符串末尾的任意次数。
  • 关于regex - R-正则表达式提取破折号和句点之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35403491/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com