如何从R中的推文中提取主题标签?

jac*_*ger 5 regex r tweets

我知道这个问题已在这里这里被问到,但是当我尝试它时出现了一个小问题:

x<- str_extract("Hello peopllz! My new home is #crazy gr8! #wow", "#\S+")
Error: '\S' is an unrecognized escape in character string starting "#\S"
Run Code Online (Sandbox Code Playgroud)

我改变了正则表达式"#(.+) ?","#\\s"但他们并没有提取井号标签.

然后我尝试了gsub方式:

x<- gsub("[^#(.+) ?]","","Hello! #London is gr8. #Wow")
Run Code Online (Sandbox Code Playgroud)

它给了: " # . #"

我出错的任何想法?我希望我的输出作为推文中所有主题标签的向量/列表(没有哈希!)

编辑:我不希望对推文进行标记,因为:1.我没有为我的程序的其余部分标记推文,2.如果我扩展它以处理大量的推文,那将是一个非常昂贵的步骤.

Bac*_*lin 9

"#\\S+"而不是"#\S+".

str_extract_all("Hello peopllz! My new home is #crazy gr8! #wow", "#\\S+")
# [[1]]
# [1] "#crazy" "#wow"  
Run Code Online (Sandbox Code Playgroud)

这里有两个级别的解析.在低级正则表达式函数内str_extract获取要搜索的模式之前( "#\S+")它首先由R解析.R不识别\S为有效的转义字符并抛出错误.通过逃避斜线与\\你让R的传递\,并S两个普通字符的正则表达式的功能,而不是将其解释为一个转义字符.

侧轨道

这可以产生相当奇怪的表达.想象一下,你有一个Windows网络上的计算机地址列表"\\computer".要搜索它,您需要输入内部str_extract(adr, "\\\\\\w+")转换"\\\w+"然后搜索的内容.