首页 > 解决方案 > 拆分具有非空格连字符的字符串

问题描述

我有如下字符串:

2 - 5-< 2
6 - 10-< 2
6 - 10-2 - 5
> 15-2 - 5

我想将这些字符串拆分到 - 既不在空格之前也不在空格之后的位置。因此,上面的字符串将按如下方式拆分:

"2 - 5" "< 2"
"6 - 10" "< 2"
"6 - 10" "2 - 5"
"> 15" "2 - 5"

在 R Studio 中,我尝试使用 sub() 和 strsplit() 但我发现很难设置正确的正则表达式。有人有线索吗?

标签: rregexregex-negationstrsplit

解决方案


perl=TRUE环视一起使用:

vec <- c("2 - 5-< 2", "6 - 10-< 2", "6 - 10-2 - 5", "> 15-2 - 5")
strsplit(vec, "(?<! )-(?!= )", perl=TRUE)
# [[1]]
# [1] "2 - 5" "< 2"  
# [[2]]
# [1] "6 - 10" "< 2"   
# [[3]]
# [1] "6 - 10" "2 - 5" 
# [[4]]
# [1] "> 15"  "2 - 5"

推荐阅读