【发布时间】:2017-05-10 18:24:16
【问题描述】:
我想从向量中提取第一个字符串。例如,
y<- c('london/hilss', 'newyork/hills', 'paris/jjk')
我想获取符号“/”之前的字符串,即,
location
london
newyork
paris
【问题讨论】:
-
该解决方案无效!这就是为什么新问题不询问转义字符的原因。
我想从向量中提取第一个字符串。例如,
y<- c('london/hilss', 'newyork/hills', 'paris/jjk')
我想获取符号“/”之前的字符串,即,
location
london
newyork
paris
【问题讨论】:
您的示例很简单,对于更一般的情况,例如
y<- c('london/hilss', 'newyork.hills', 'paris-jjk')
也许跟随会更好?
stringr::str_extract(y, '\\w*')
【讨论】:
str_extract 返回一个字符向量,而str_match 返回一个字符矩阵。 @Sean:你有偏好吗?在我看来,它们基本上是相同的,尽管我对矩阵感到恼火。
stringr::str_extract(a, '\\b*')
【讨论】:
gsub 的一个非常简单的方法
gsub("/.*", '', y)
[1] "london" "newyork" "paris"
【讨论】:
/.* 不需要转义,而\\/.* 会产生相同的结果吗?换句话说,gsub("/.*", '', y) 与 gsub("\\/.*", '', y) 相同
这个正则表达式也可以正常工作。
正则表达式: ^[^\/]+
它将从字符串的开头开始匹配,直到找到/。
^ 外部字符类 [] 是 anchor 用于字符串的开头。
而 ^ 在字符类中表示 negated character class。
【讨论】: