我正在分析Twitter数据,并希望提取推文中的所有主题标签。我曾经像这样提取主题标签:

tweet = 'I like #apple #orange'
str_extract_all(tweet,"#\\S+")

这在大多数情况下都有效。但是有时两个标签彼此相邻。
tweet = 'I like #apple#orange'
str_extract_all(tweet,"#\\S+")

我得到的是这样的:
[[1]]
[1] "#apple#orange"

有谁知道当标签彼此分离或彼此相邻时,如何正确提取标签?

最佳答案

您正在使用\S过度匹配,因为这将匹配非空格字符和#

您可以使用negated character类来匹配空白字符,也不能匹配#

#[^#\\s]+

您的代码可能看起来像
tweet = 'I like #apple#orange'
str_extract_all(tweet,"#[^#\\s]+")

结果
[[1]]
[1] "#apple"  "#orange

R demo

10-07 18:59
查看更多