仅包含主题标签的推文的正则表达式

Regular expression for tweets that contain only hashtags

我正在使用 R 并且有一个很大的推文数据框。我想要一个 grep 调用,它会 select 只由主题标签组成的推文(想从最终数据帧中排除这些)。

我最初的 grep 努力:

hashtagonly_tweets_INDEX = grep("^#\w*[^\w]", allTweets$V1,
                            value=F,
                            ignore.case = T,
                            fixed=F)

我希望这会 select 多个以主题标签 ^#\w* 开头的单词,而不是 select 个没有主题标签 [^\w] 的单词。

但是,我现在显然 运行 没有天赋,因为它收集的推文类型仍然包含主题标签中的文本,例如:

#wtf is even happening right now. this truck is driving 50 down the center of the highway. #learntodrive

#WhatGrindsMyGears When someone pulls out in front of me then never proceeds to go the speed limit or above. #roadrage

#Traffic in #Westminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds

非常感谢任何建议,

谢谢

我不确定我是否理解你的问题,这里有一个正则表达式匹配仅包含主题标签的推文:

^\s*(?:#\w+\s*)+$

要确定特定推文是否只有主题标签,您可以使用 strsplit 对其进行标记化,然后在列表中搜索不以“#”开头的条目。考虑 tweet1(仅主题标签)和 tweet2(主题标签加单词)。

tweet1 <- "#Traffic #in #Westminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds"
tweet2 <- "#Traffic in #Westminster #travel #roadrage #transport #London #tourism #sightseeing #dark #clouds"

haswords <- function(tweet) {
    strings <- strsplit(tweet,' ')
    for (word in 1:length(strings[[1]])) {
        if (substring(strings[[1]][word],1,1) != '#') {
            return (TRUE)
        }
    }
    FALSE
}

函数 haswords() returns tweet2 为 TRUE,tweet1 为 FALSE。