在逗号后拆分字符串,不带尾随空格
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)
这与上面的结果相同。
正如标题所说,我想拆分这个字符串
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)
这与上面的结果相同。