【问题标题】:Extract string using stringr使用 stringr 提取字符串
【发布时间】:2015-04-28 17:08:10
【问题描述】:

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

【问题讨论】:

    标签: regex r


    【解决方案1】:

    你可以从base R试试sub

     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"
    

    【讨论】:

    • 有什么办法可以从表达式中提取 0.0.0 吗??
    • 试试gsub('^[^0-9]*|\\|.*$', '', k)#[1] "0.0.0"
    • 你太棒了!!谢谢
    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多