如何在R中按/拆分而不是//?

3

假设我有以下字符串:

str <- "a//b/c"

期望输出:

c("a//b", "c").

我希望在 / 的位置分割字符,但不想在 // 的位置分割。

我的尝试:

根据 https://dev59.com/42w05IYBdhLWcg3wTwKY#7317087 的建议,我尝试了以下方法:

  strsplit(split = "[[]^//[]]|/", x = "a//b/c", perl = TRUE)

(非R用户需要在R中转义特殊字符,因此"["变为"[[]",不确定这在其他语言中是否普遍。)
2个回答

5

您可以使用

strsplit("a//b/c", "(?<!/)/(?!/)", perl=TRUE)

请查看在线的R演示正则表达式演示(?<!/)(?!/)模式表示:
  • (?<!/) - 不是紧接着一个 / 字符的位置
  • / - 一个 / 字符
  • (?!/) - 不是紧接着一个 / 字符的位置

2

我们还可以 跳过 模式并匹配其他内容

strsplit(str, "//(*SKIP)(*F)|/", perl = TRUE)[[1]]
#[1] "a//b" "c"   

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接