零宽度负前瞻断言如何在R中起作用?

时间:2017-02-15 11:08:42

标签: r regex

的输出
strsplit('abc dcf', split = '(?=c)', perl = T)

符合预期。

然而,输出

strsplit('abc dcf', split = '(?!c)', perl = T)

[[1]]
[1] "a" "b" "c" " " "d" "c" "f"

虽然我的期望是

[[1]]
[1] "a"  "b"  "c " "d"  "cf"

因为我认为如果前一个块的最后一个字符与char c匹配,它就不会被分割。我对负面预测的理解是错误的吗?

1 个答案:

答案 0 :(得分:1)

我们可以尝试

strsplit('abc dcf', "(?![c ])\\s*\\b", perl=TRUE)
#[[1]]
#[1] "a"  "b"  "c " "d"  "cf"