将字符向量拆分为两部分

时间:2016-08-24 17:52:59

标签: regex r split

考虑以下长度为1的字符向量:

l <- "http://www.idealo.de/preisvergleich/OffersOfProduct/4983410_-iphone-se-64gb-spacegrau-apple.html"

我希望将它分成两部分,因此第一部分应该是:

p1 <- "http://www.idealo.de/preisvergleich/OffersOfProduct/4983410"

和第二个:

p2 <- "_-iphone-se-64gb-spacegrau-apple.html"

当然,必须使用正则表达式来解决问题。请你能给我一些见解,我可以轻松学习正则表达式的操作。如有任何帮助,我将非常感谢。

2 个答案:

答案 0 :(得分:1)

"(?<=[^_])(?=_)"使用strsplit为您提供所需内容:

strsplit(l, "(?<=[^_])(?=_)", perl = T)

# [[1]]
# [1] "http://www.idealo.de/preisvergleich/OffersOfProduct/4983410"
# [2] "_-iphone-se-64gb-spacegrau-apple.html" 

答案 1 :(得分:0)

如果您对没有正则表达式的处理感兴趣,可以始终使用stringr包中的str_split等函数来分隔此字符串。

library(stringr)
l <- "http://www.idealo.de/preisvergleich/OffersOfProduct/4983410_-iphone-se-64gb-spacegrau-apple.html"
split = stringr::str_split_fixed(l,pattern = "_",2)
p1 = split[1]
p2 = split[2]