在逗号后拆分字符串,不带尾随空格

Split string after comma without trailing whitespace

正如标题所说,我想拆分这个字符串

strsplit(c("aaa,aaa", "bbb, bbb", "ddd , ddd"), ",")

那个

[[1]]
[1] "aaa" "aaa"

[[2]]
[1] "bbb, bbb"

[[3]]
[1] "ddd , ddd"

因此,正则表达式必须考虑逗号后不应出现空格。可能是个骗子,但无法通过谷歌搜索找到解决方案。

regular expression has to consider that no whitespace should occur after the comma

使用否定先行断言:

> strsplit(c("aaa,aaa", "bbb, bbb", "ddd , ddd"), ",(?!\s)", perl = TRUE)
[[1]]
[1] "aaa" "aaa"

[[2]]
[1] "bbb, bbb"

[[3]]
[1] "ddd , ddd"

,(?!\s) 只有在后面没有 space

时才匹配 ,

只是为了提供一个替代方案 (*SKIP)(*FAIL):

pattern <- " , (*SKIP)(*FAIL)|,"
data <- c("aaa,aaa", "bbb, bbb", "ddd , ddd")
strsplit(data, pattern, perl = T)

这与上面的结果相同。