【问题标题】:How does zero-width negative lookahead assertions work in R? [duplicate]零宽度负前瞻断言如何在 R 中工作? [复制]
【发布时间】: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 如何处理零长度匹配。

标签: r regex


【解决方案1】:

我们可以试试

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

【讨论】:

  • 嗨。你能解释一下为什么我的代码不起作用吗?我仍然很困惑。另外,我不需要删除空格。
  • @mt1022 通过不删除空格更新帖子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2019-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
相关资源
最近更新 更多