如何提取两个连字符之间的单词?

问题描述

如何提取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+)_.*",gsub("^_|_$","",ts))
,

您也可以尝试:

#Data
ts = c("az_bna_njh","j_hj_lkiuy","ml_","_kk")
#Code
gsub(".*_(.*)\\_.*",whitespace = '_'))

输出:

[1] "bna" "hj"  "ml"  "kk"
,

另一种尝试的方式

library(stringr)
str_replace_all(ts,c("^.*_(\\w+)_.*$" = "\\1","^_|_$" = ""))
#[1] "bna" "hj"  "ml"  "kk"