【发布时间】:2026-02-13 01:15:01
【问题描述】:
我正在努力删除字符串中下划线之前的子字符串。 我想使用 *(通配符)作为下划线之前的位:
a <- c("foo_5", "bar_7")
a <- gsub("*_", "", a, perl = TRUE)
结果应该是这样的:
> a
[1] 5 7
我也尝试过诸如“^*”或“?”之类的东西,但并没有真正奏效。
【问题讨论】:
我正在努力删除字符串中下划线之前的子字符串。 我想使用 *(通配符)作为下划线之前的位:
a <- c("foo_5", "bar_7")
a <- gsub("*_", "", a, perl = TRUE)
结果应该是这样的:
> a
[1] 5 7
我也尝试过诸如“^*”或“?”之类的东西,但并没有真正奏效。
【问题讨论】:
只是指出有一种方法使用tidyverse 中的函数,我发现它比gsub 更具可读性:
a %>% stringr::str_remove(pattern = ".*_")
【讨论】:
as.numeric(gsub(pattern=".*_", replacement = '', a)
[1] 5 7
【讨论】:
或者,您也可以尝试:
gsub("\\S+_", "", a)
【讨论】:
以下代码适用于您的示例:
gsub(".*_", "", a)
【讨论】:
?regex。