如何实现仅按无尾随空格的逗号分割字符串?
解决方案:仅在逗号后无空格时分割字符串
我明白你想要的效果啦——只把逗号后面没有紧跟空格的地方作为分割点,而逗号后带空格的字符串就保持原样不拆分。这里用正则表达式的负向预查就能轻松实现,具体代码如下:
# 定义你的输入向量 input_strings <- c("aaa,aaa", "bbb, bbb", "ddd , ddd") # 执行指定规则的分割 split_result <- strsplit(input_strings, ",(?!\\s)", perl = TRUE) # 查看结果 split_result
代码解释
,(?!\\s)这个正则模式的含义是:匹配一个逗号,并且该逗号的后面不能是空白字符((?!...)是负向预查语法,用来排除符合括号内条件的情况)。不管逗号后面是单个空格还是多个空格,只要有空白就不会触发分割。- 必须添加
perl = TRUE参数,因为R默认的正则引擎不支持预查语法,启用Perl兼容模式才能让这个正则生效。
运行这段代码后,你会得到完全符合预期的结果:
[[1]] [1] "aaa" "aaa" [[2]] [1] "bbb, bbb" [[3]] [1] "ddd , ddd"
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

