【问题标题】:obtaining first word in the string [duplicate]获取字符串中的第一个单词[重复]
【发布时间】:2017-05-10 18:24:16
【问题描述】:

我想从向量中提取第一个字符串。例如,

 y<- c('london/hilss', 'newyork/hills', 'paris/jjk')

我想获取符号“/”之前的字符串,即,

  location 
  london
  newyork
  paris

【问题讨论】:

  • 该解决方案无效!这就是为什么新问题不询问转义字符的原因。

标签: r regex stringr


【解决方案1】:

您的示例很简单,对于更一般的情况,例如

y<- c('london/hilss', 'newyork.hills', 'paris-jjk')

也许跟随会更好?

stringr::str_extract(y, '\\w*')

【讨论】:

  • str_extract 返回一个字符向量,而str_match 返回一个字符矩阵。 @Sean:你有偏好吗?在我看来,它们基本上是相同的,尽管我对矩阵感到恼火。
【解决方案2】:

stringr::str_extract(a, '\\b*')

【讨论】:

    【解决方案3】:

    gsub 的一个非常简单的方法

    gsub("/.*", '', y)
    [1] "london"  "newyork" "paris"
    

    【讨论】:

    • 你能解释一下为什么/.* 不需要转义,而\\/.* 会产生相同的结果吗?换句话说,gsub("/.*", '', y)gsub("\\/.*", '', y) 相同
    • @Nettle 我的理解是不需要转义正斜杠。通过添加 `\`,您基本上是在转义不需要转义的内容,因此不会发生任何变化。
    【解决方案4】:

    这个正则表达式也可以正常工作。

    正则表达式: ^[^\/]+

    它将从字符串的开头开始匹配,直到找到/

    ^ 外部字符类 []anchor 用于字符串的开头。

    ^ 在字符类中表示 negated character class

    Regex101 Demo

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多