6

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

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

我将正则表达式更改为"#(.+) ?", "#\\s",但他们没有提取主题标签。

然后我尝试了 gsub 方式:

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

它给出了:" # . #"

有什么想法我哪里出错了吗?我希望我的输出作为推文中所有主题标签的向量/列表(没有哈希!)

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

4

3 回答 3

11

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

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

这里有两个级别的解析。在其中的低级正则表达式函数str_extract获得您要搜索的模式之前( "#\S+"),它首先由 R 解析。R 不识别\S为有效的转义字符并引发错误。通过转义斜线,\\您告诉 R 将\andS作为两个普通字符传递给 regexp 函数,而不是将其解释为一个转义字符

侧轨

这会产生相当奇怪的表达。想象一下,您有一个 Windows 网络上计算机的地址列表,格式为"\\computer". 要搜索它,您需要输入str_extract(adr, "\\\\\\w+")将在"\\\w+"内部变为的然后搜索。

于 2012-12-07T12:30:06.863 回答
3

只是插话。根据您访问 twitter 数据的方式,可能已经为您解析了此信息。例如,如果您访问示例流,原始 JSON 格式有一个条目,可以将引用、标签等解析为您的数组。在此处查看twitter api 文档

于 2012-12-07T17:56:31.433 回答
0

如何#\S+替换#\\\S+

于 2012-12-07T12:29:24.033 回答