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

R语言如何使用正则替换字符串中点号,得到下划线分隔的目标结果

解决方案

你可以通过两次正则替换实现需求,base R 自带的 gsub() 函数就能完成,逻辑如下:

  1. 先删除字符串首尾的所有连续点
  2. 再将字符串中间的所有连续点统一替换为下划线

代码示例

构造测试数据

str_vec <- c(
  "..A.B....c...A..D..",
  "A..S.E.Q.......AW..",
  ".B.C..a...R......Ds"
)

base R 实现

# 内层gsub删除首尾点,外层gsub替换中间连续点为下划线
result <- gsub("\\.+", "_", gsub("^\\.+|\\.+$", "", str_vec))

正则说明

  • ^\\.+:匹配字符串开头的1个或多个点
  • \\.+$:匹配字符串结尾的1个或多个点
  • \\.+:匹配任意位置连续的1个或多个点

stringr 包实现(更易读)

如果你常用 tidyverse 生态,用 stringr 包的链式写法更直观:

library(stringr)
result <- str_vec |> 
  str_remove_all("^\\.+|\\.+$") |> 
  str_replace_all("\\.+", "_")

输出结果

运行后得到的结果完全符合要求:

[1] "A_B_c_A_D"  "A_S_E_Q_AW" "B_C_a_R_Ds"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:24:03