R: strsplit 负面环视

R: strsplit on negative lookaround

假设我需要将 caabacb 拆分为单独的字母,除非字母后跟 b,从而导致 "c" "a" "ab" "a" "cb"。我尝试使用以下行,它在正则表达式测试器上看起来不错,但在 R 中不起作用。我做错了什么?

strsplit('caabacb','(?!b)',perl=TRUE)
[[1]]
[1] "c" "a" "a" "b" "a" "c" "b"

strsplit() 可能需要拆分一些东西。你可以插入例如";"gsub().

strsplit(gsub("(?!^.|b|\b)", ";", "caabacb", perl=TRUE), ";", perl=TRUE)
# [[1]]
# [1] "c"  "a"  "ab" "a"  "cb"

您还可以添加匹配任何字符 (?<=.) 的前缀正后视。正后向 (?<=.) 会在每个字符处拆分字符串(不删除字符),但负前向 (?!b) 排除字符后跟 b 的拆分:

strsplit('caabacb', '(?<=.)(?!b)', perl = TRUE)
#> [[1]]
#> [1] "c"  "a"  "ab" "a"  "cb"