我知道这个问题已经被问到here和here但是当我尝试时出现了一个小问题:
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")
它给出了:" # . #"
我出错的任何想法?我希望我的输出作为推文中所有主题标签的向量/列表(没有哈希!)
编辑:我不想对推文进行标记,因为: 我没有为我的其他程序提供推文的标记, 如果我扩展它以处理大量的推文,那将是一个非常昂贵的步骤。
答案 0 :(得分:9)
使用"#\\S+"
代替"#\S+"
。
str_extract_all("Hello peopllz! My new home is #crazy gr8! #wow", "#\\S+")
# [[1]]
# [1] "#crazy" "#wow"
这里有两个级别的解析。在str_extract
中的低级正则表达式函数获取您要搜索的模式(即 "#\S+"
)之前,它首先由R解析.R不识别{{1} }作为有效的转义字符并抛出错误。通过使用\S
转义斜杠,您告诉R将\\
和\
作为两个普通字符传递给regexp函数,而不是将其解释为一个逃脱角色。
这可以产生相当奇怪的表达。想象一下,您在S
窗体上有一个Windows网络上计算机的地址列表。要搜索它,您需要输入"\\computer"
,在内部转换为str_extract(adr, "\\\\\\w+")
,然后搜索。
答案 1 :(得分:3)
正好进入。根据您访问Twitter数据的方式,可能已经为您解析了这些信息。例如,如果访问示例流,则原始JSON格式具有一个条目,可以将引用,标记等作为数组解析。请在此处查看twitter api documentation。
答案 2 :(得分:0)
如何用#\S+
#\\\S+