Regex 提取从特定字符开始直到下一个空格的子字符串

Regex 提取从特定字符开始直到下一个空格的子字符串,regex,r,Regex,R,我想从tweets中提取标签(twitter句柄) tweet <- "@me bla bla bla bla @2_him some text @me_" 我不知道哪个正则表达式会返回整个字符串(@tag) 谢谢 如果要匹配所有非空格,只需使用相应的正则表达式即可 regmatches(tweet, gregexpr("@[^ ]*", tweet))[[1]] # [1] "@me" "@2_him" "@me_" 如果要匹配所有非空格,只需使用相应的正则表达式即可 re

我想从tweets中提取标签(twitter句柄)

tweet <- "@me bla bla bla bla @2_him some text @me_"
我不知道哪个正则表达式会返回整个字符串(@tag)


谢谢

如果要匹配所有非空格,只需使用相应的正则表达式即可

regmatches(tweet, gregexpr("@[^ ]*", tweet))[[1]]
# [1] "@me"    "@2_him" "@me_"  

如果要匹配所有非空格,只需使用相应的正则表达式即可

regmatches(tweet, gregexpr("@[^ ]*", tweet))[[1]]
# [1] "@me"    "@2_him" "@me_"  

使用
\w*
代替
[:alnum:]*
,因为
不在字母数字字符列表下(即,
[:alnum:]
匹配字母数字
[A-Za-z0-9]
字符),但它在单词字符列表下


使用
\w*
代替
[:alnum:]*
,因为
不在字母数字字符列表下(即,
[:alnum:]
匹配字母数字
[A-Za-z0-9]
字符),但它在单词字符列表下


您可以使用以下命令<代码>\S将匹配任何非空白字符。此外,您还需要使用
+
量词而不是
*
,否则,如果字符串中确实存在
@
字符,则最终会自动匹配该字符

> regmatches(tweet, gregexpr("@\\S+", tweet))[[1]]
# [1] "@me"    "@2_him" "@me_" 

您可以使用以下命令<代码>\S将匹配任何非空白字符。此外,您还需要使用
+
量词而不是
*
,否则,如果字符串中确实存在
@
字符,则最终会自动匹配该字符

> regmatches(tweet, gregexpr("@\\S+", tweet))[[1]]
# [1] "@me"    "@2_him" "@me_" 

qdapRegex
软件包具有专门为此任务设计的功能
rm_标签

library(qdapRegex)
rm_tag(tweet, extract=TRUE)

## [[1]]
## [1] "@me"    "@2_him" "@me_" 

qdapRegex
软件包具有专门为此任务设计的功能
rm_标签

library(qdapRegex)
rm_tag(tweet, extract=TRUE)

## [[1]]
## [1] "@me"    "@2_him" "@me_"