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

如何在R中使用正则表达式提取@后非数字开头的企业账号短语

解决方案

原有代码问题梳理

  • 正则表达式开头多了强制匹配的空格,你的示例中@是字段开头的内容,前面无空格,会导致匹配失效
  • 没有使用分组或断言提取@后的账号内容,会把@本身也计入匹配结果,不符合输出要求
  • 语法层面漏了mutate()函数(dplyr管道中新增字段必须用mutate包裹),且没有按照要求使用case_when语句

修正后实现代码

首先调整正则为零宽断言写法,直接提取@后非数字开头的账号内容:

# 加载依赖包
library(dplyr)
library(stringr)

# 正则含义:匹配@后面、非数字开头的账号字符,提取结果自动忽略@符号
tweet_pattern <- "(?<=@)(?!\\d)\\w+"

Customer <- Customer %>%
  mutate(Response_To_Comp = case_when(
    str_detect(Tweet, tweet_pattern) ~ str_extract(Tweet, tweet_pattern),
    TRUE ~ NA_character_
  ))

效果说明

运行上述代码后得到的结果和你提供的预期输出完全一致:

  • 非数字开头的企业账号@sprintcare、@apple会分别提取出sprintcare、apple
  • 数字开头的@12345、@45678会被过滤,返回NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:57:00