考虑以下长度为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"
当然,必须使用正则表达式来解决问题。请你能给我一些见解,我可以轻松学习正则表达式的操作。如有任何帮助,我将非常感谢。
答案 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]