我有一个字符串"BTL_OTM_TLS_TTL_ACQ_0.0.0|Fixed"
,我想从中提取"BTL_OTM_TLS_TTL_ACQ"
。
但是我得到了"BTL_OTM_TLS_TTL_ACQ" "|"
。我使用过stringr,我提供了下面的代码。任何帮助将不胜感激。
> k
[1] "BTL_OTM_TLS_TTL_ACQ_0.0.0|Fixed"
> str_extract(k, "(_)[0-9](.)+")
[1] "_0.0.0|Fixed"
> strsplit(as.character(k),str_extract(as.character(k),"(_)[0-9](.)+"))
[[1]]
[1] "BTL_OTM_TLS_TTL_ACQ" "|"
答案 0 :(得分:6)
您可以尝试sub
base R
sub('_\\d.*', '', k)
#[1] "BTL_OTM_TLS_TTL_ACQ"
或将lookarounds
与str_extract
library(stringr)
str_extract(k, perl('.*(?=_[0-9])'))
#[1] "BTL_OTM_TLS_TTL_ACQ"
或者
strsplit(k, '_[0-9]+.*$')[[1]]
#[1] "BTL_OTM_TLS_TTL_ACQ"
如果我们需要提取0.0.0
,则有一个选项是
gsub('^[^0-9]*|\\|.*$', '', k)
#[1] "0.0.0"
k <- "BTL_OTM_TLS_TTL_ACQ_0.0.0|Fixed"