【发布时间】:2020-12-30 19:51:30
【问题描述】:
如何提取R中两个连字符之间的所有内容
ts = ("az_bna_njh","j_hj_lkiuy","ml_", "_kk")
我需要提取 bna、hj、ml 和 kk
【问题讨论】:
如何提取R中两个连字符之间的所有内容
ts = ("az_bna_njh","j_hj_lkiuy","ml_", "_kk")
我需要提取 bna、hj、ml 和 kk
【问题讨论】:
我们可以使用
sub("^\\w+_(\\w+)_.*", "\\1", trimws(ts, whitespace = "_"))
#[1] "bna" "hj" "ml" "kk"
或者另一种选择是
sub("^\\w+_(\\w+)_.*", "\\1", gsub("^_|_$", "", ts))
【讨论】:
R 4.0.2
trimws 不起作用。不确定它如何与公认的解决方案一起使用
你也可以试试:
#Data
ts = c("az_bna_njh","j_hj_lkiuy","ml_", "_kk")
#Code
gsub(".*_(.*)\\_.*", "\\1", trimws(ts,whitespace = '_'))
输出:
[1] "bna" "hj" "ml" "kk"
【讨论】:
ts = c("an_bn_ajh") 然后gsub(".*n_(.*)\\_a.*", "\\1", ts) 让我知道这是否适合你!
你可以尝试另一种方式
library(stringr)
str_replace_all(ts, c("^.*_(\\w+)_.*$" = "\\1", "^_|_$" = ""))
#[1] "bna" "hj" "ml" "kk"
【讨论】: