如何从推特文本中提取转推目标用户并过滤无关提及?
提取推特转推中的原作者ID
示例数据
现有推特文本向量如下:
tweet_vector <- c("RT @person: tweet tweet tweet", "RT @otherperson: tweet tweet", "Tweet, this isn't a retweet, @3rdperson.", "RT @4thperson: this retweet also has a mention, @mentioned")
需求
需要编写函数,从上述向量中提取转推的原作者ID,非转推内容返回NA,最终输出结果如下:
[1] "person" "otherperson" NA "4thperson"
直接使用str_extract("@*", tweet_vector)无法满足需求,因为会捕获非转推场景下的无关@提及(如@3rdperson)。
解决方案
利用stringr包的正则匹配功能,通过正向预查定位转推开头的RT @标识,再提取到冒号前的用户名:
- 先加载
stringr包:
library(stringr)
- 定义提取函数:
extract_retweet_author <- function(tweets) { # 匹配RT @之后、冒号之前的所有非冒号字符 str_extract(tweets, "(?<=RT @)[^:]+") }
- 测试函数:
extract_retweet_author(tweet_vector)
正则说明
(?<=RT @):正向预查,确保目标字符前是RT @,仅匹配转推场景下的用户名[^:]+:匹配任意非冒号的字符,直到遇到冒号为止,精准截取原作者ID
内容的提问来源于stack exchange,提问作者Kyle_Rose
相关产品推荐
相关产品推荐

