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

R语言字符串处理:删除尾部指定分隔符及后续内容并保留右括号

R字符串分隔符处理正则调整方案

原实现问题根因

原正则[-\\) ][^-\\) ]*$将右括号)与短横-、空格归为同类需删除自身的分隔符,当匹配到右括号作为最后分隔符的场景(如示例第四个字符串的)dong片段)时,会连同右括号本身一同删除,导致结果错误。

调整思路

基于原始字符串定位最后一个分隔符簇的位置:

  1. 先删除最后一个分隔符(短横、空格、右括号任意一种)后方的所有非分隔符文本,保留分隔符本身
  2. 再删除残留的短横、空格分隔符,仅保留作为特殊规则豁免删除的右括号

实现代码

使用PCRE零宽后断言定位最后一个分隔符,基础R即可运行,无需额外依赖:

name <- c("Geomdan dong", "Geomdan-dong ", "Geomdan 1(il)-dong", "Geomdan-1(il)dong", "Geomdan-1(il) dong")

# 分步处理:先删最后分隔符后的非分隔符内容,再删结尾残留的短横/空格
trim_name <- trimws(name)
step1 <- sub("(?<=[-\\) ])[^-\\) ]*$", "", trim_name, perl = TRUE)
result <- sub("[- ]+$", "", step1)

也可以合并为一行嵌套写法:

result <- sub("[- ]+$", "", sub("(?<=[-\\) ])[^-\\) ]*$", "", trimws(name), perl = TRUE))

结果验证

运行后result的输出为:

[1] "Geomdan"       "Geomdan"       "Geomdan 1(il)" "Geomdan-1(il)" "Geomdan-1(il)"

完全匹配预期输出,且可兼容连续分隔符簇、右括号后存在其他分隔符等边缘场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 10:27:04