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

如何删除字符串中非数字前的句号?R语言正则报错求助

解决R语言中保留数字后句号、删除其他句号的问题

你的代码报错是因为R默认使用POSIX正则引擎,不支持(?<![:digit:])这种负向后顾断言,只需要给gsub加上perl=TRUE参数启用PCRE正则引擎就能解决。

修正后的代码如下:

df <- data.frame(
  ADDR = c("2.3 to 11.1 on N. Side Ave.", "MP 1.25-4.00 Main St."),
  NUM = c("12-34", "23-45")
)

f.Addr <- function(ADDRESS, NUMBER) {
  # 匹配前面不是数字的句号,替换为空格
  ADDRESS <- gsub("(?<!\\d)\\.", " ", ADDRESS, perl = TRUE)
  # 若要直接删除句号(替换为空),将第二个参数改为""即可
  data.frame(NUMBER, ADDRESS)
}

df <- f.Addr(df$ADDR, df$NUM)
print(df)

运行后输出与你的期望一致:

ADDRESS   NUMBER
1 2.3 to 11.1 on N  Side Ave  12-34
2       MP 1.25-4.00 Main St  23-45

补充说明:

  • (?<!\\d) 是负向后顾断言,用来限定"当前位置前面不是数字"
  • \\. 匹配句号(句号在正则中属于特殊字符,必须转义)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:45:30