【发布时间】:2017-02-15 11:08:42
【问题描述】:
输出
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"
因为我认为如果前一个块的最后一个字符与字符 c 匹配,它就不会被拆分。我对负前瞻的理解是错误的吗?
【问题讨论】:
-
(?<!c)是消极的后视,而不是消极的前瞻(?!c) -
@Toto。这似乎不是问题。
strsplit('abc dcf', split = '(?!c)', perl = T)提供与strsplit('abc dcf', split = '(?<!c)', perl = T)相同的输出,我根据您的评论稍微编辑了问题。 -
正或负前瞻并不重要。重要的是
strsplit如何处理零长度匹配。