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

在R语言中如何删除字符串任意位置以@开头的字符片段

问题原因

你的现有代码存在几个问题导致匹配失败:

  • 正则开头写了固定空格,只能匹配前面带空格的@片段,自然识别不到句首的@
  • 用\w+匹配@后的内容,仅能匹配字母、数字、下划线,遇到示例中带.的@片段就会匹配失败
  • str_remove只会替换第一个命中的片段,类似第一条有两个连续@的场景无法删除干净
  • 额外加的str_detect判断完全没必要,匹配不到时字符串替换函数会直接返回原文本,你写的ifelse逻辑反而会把没有@片段的内容误改为NA

修正方案

把正则改成匹配所有@开头到下一个空格前的内容,再用全局替换函数删除所有命中片段即可:

library(dplyr)
library(stringr)

# 正则含义:匹配@开头,后面所有非空白字符的片段
tweet_pattern <- "@\\S+"

Customer <- Customer %>%
  mutate(cleaned_tweet = str_remove_all(Tweet, tweet_pattern) %>% str_squish())

说明

  • @\\S+中的\\S代表所有非空白字符,不管@后面跟的是字母、点还是其他符号,都能完整匹配到下一个空格为止,覆盖你所有示例场景
  • str_remove_all会删除整段文本中所有命中的@片段,不管@出现在句首、句中还是句尾
  • 最后加str_squish是为了清除删除@后留下的连续空格、首尾多余空格,保证输出文本格式整洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:39:01