我有如下字串:
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() 但我發現很難設定正確的正則運算式。有沒有人有線索?
uj5u.com熱心網友回復:
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"
uj5u.com熱心網友回復:
我想這是一個更容易理解的解決方案:
library(stringr)
str_split(vec, "(?<=\\d)-(?=\\d)")
[[1]]
[1] "2 - 5" "< 2"
[[2]]
[1] "6 - 10" "< 2"
[[3]]
[1] "6 - 10" "2 - 5"
[[4]]
[1] "> 15" "2 - 5"
首先,perl = TRUE不需要(好吧,但是一個新包,stringr)。但是,(?<=\\d)然后(?=\\d)是積極的環顧,這本質上更容易處理。第一個意思是:如果你在左邊看到一個數字......; 第二個說,如果你在右邊看到一個數字......并且str_split(帶下劃線)說,如果滿足這兩個條件,則在破折號上拆分-。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/337885.html
