我想这是一个常见的问题,我发现了很多网页,包括一些来自SO,但我不明白如何实现它.
我是REGEX的新手,我想在R中使用它来从句子中提取前几个单词.
例如,如果我的判决是
z = "I love stack overflow it is such a cool site"
Run Code Online (Sandbox Code Playgroud)
我喜欢把我的输出作为(如果我需要前四个单词)
[1] "I love stack overflow"
Run Code Online (Sandbox Code Playgroud)
或者(如果我需要最后四个字)
[1] "such a cool site"
Run Code Online (Sandbox Code Playgroud)
当然,以下作品
paste(strsplit(z," ")[[1]][1:4],collapse=" ")
paste(strsplit(z," ")[[1]][7:10],collapse=" ")
Run Code Online (Sandbox Code Playgroud)
但我想尝试一个性能问题的正则表达式解决方案,因为我需要处理非常大的文件(也为了解它)
我看了几个链接,包括 Regex从字符串中提取前3个单词和 http://osherove.com/blog/2005/1/7/using-regex-to-return-the-first-n-words-in -a-string.html
所以我尝试了类似的东西
gsub("^((?:\S+\s+){2}\S+).*",z,perl=TRUE)
Error: '\S' is an unrecognized escape in character string starting ""^((?:\S"
Run Code Online (Sandbox Code Playgroud)
我尝试了其他的东西,但它通常返回我整个字符串,或空字符串.
substr的另一个问题是它返回一个列表.也许看起来[[]]操作员在处理大文件和应用东西时会慢一点(??).
看起来R中使用的语法有些不同?谢谢 !