You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何分割包含前后无空格短横线的字符串?

解决方法

你需要用零宽断言匹配满足「前后都无空白」的短横线,配合strsplit的perl=TRUE参数即可实现需求。

1. 核心正则说明

匹配目标短横线的正则为:(?<![[:blank:]])-(?![[:blank:]])

  • (?<![[:blank:]]):负向后行断言,限定短横线前不能有任意空白字符
  • (?![[:blank:]]):负向前行断言,限定短横线后不能有任意空白字符
    R基础正则引擎不支持零宽断言,调用strsplit时必须加perl = TRUE参数启用Perl正则引擎。

2. 完整代码示例

# 构造示例输入向量
input_vec <- c(
  "2 - 5-< 2",
  "6 - 10-< 2",
  "6 - 10-2 - 5",
  "> 15-2 - 5"
)

# 按规则分割字符串
split_result <- strsplit(
  x = input_vec,
  split = "(?<![[:blank:]])-(?![[:blank:]])",
  perl = TRUE
)

# 查看原始分割结果
print(split_result, quote = TRUE)

# 如需要输出为预期的引号包裹格式,可额外执行:
formatted_output <- sapply(split_result, function(item) {
  paste0('"', item, '"', collapse = " ")
})
cat(formatted_output, sep = "\n")

3. 输出验证

运行上述代码后,formatted_output的打印结果和你给出的预期完全一致:

"2 - 5" "< 2"
"6 - 10" "< 2"
"6 - 10" "2 - 5"
"> 15" "2 - 5"

内容的提问来源于stack exchange,提问作者mbistato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:15:08