使用stringr提取字符串

时间:2015-04-28 17:08:11

标签: regex r

我有一个字符串"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" "|"

1 个答案:

答案 0 :(得分:6)

您可以尝试sub

中的base R
 sub('_\\d.*', '', k)
 #[1] "BTL_OTM_TLS_TTL_ACQ"

或将lookaroundsstr_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"