从以符号“-”分隔的字符串中提取数字

时间:2019-08-26 15:30:24

标签: r regex

我拥有的字符串由带正负号的破折号分隔。例如,我有两个看起来像这样的字符串:

"1-2--3"
"-1-2--3"

我想从字符串1中提取“ 1”,“ 2”,“-3”

并在字符串2中包含“ -1”,“ 2”,“-3”

如何在R中做到这一点?

1 个答案:

答案 0 :(得分:7)

您可以使用stringr进行轻松拆分,并保留正面外观

library(stringr)
x <- c("1-2--3", "-1-2--3")
str_split(x, "(?<=\\d)-")

# [[1]]
# [1] "1"  "2"  "-3"
# 
# [[2]]
# [1] "-1" "2"  "-3"

这会在数字后面的每个破折号处分割字符串。

如@IceCreamToucan所指出的那样,如果您设置了strsplit

,它也可以与基数R perl=TRUE一起使用。
strsplit(x, "(?<=\\d)-", perl=TRUE)