我有一个文本文档,我试图在“抽象”和“关键字”(在R中)之间获取文本。这是我正在使用的代码:
gsub(".*abstract\\s*|keywords.*", "\\1", string)
然而,这不起作用,因为文本中的其他地方出现了“抽象”这个词,所以我把它变得像这样非贪婪(在抽象面前加上?)
gsub(".*?abstract\\s*|keywords.*", "\\1", string)
但由于某种原因,它现在需要“抽象”和“关键字”之间的文本(这是我想要的),但也是从文本中出现的第二个“抽象”开始的文本,一直到最后。 有什么想法吗?
答案 0 :(得分:1)
看起来你的搜索字词中没有任何内容,你只需要一些()
来实际获取内容,\\1
将返回你的目标:
words <- c("these are some different abstract words that might be between keywords or they might just be bounded by abstract ideas")
gsub(".* abstract (.*) keywords.*", "\\1", words)
[1] "words that might be between"
答案 1 :(得分:1)
我认为这应该能满足您的需求:
regmatches(string, gregexpr("(?<=abstract).*(?=keywords)", string, perl = TRUE))
它的作用:
(?<=abstract)
使用&#34;展望未来&#34;能够在单词&#34; abstract&#34; .*
匹配任意数量的关键字(?=keywords)
使用&#34;看后面&#34;用于在单词&#34;关键字&#34; gregexpr
在string
perl = TRUE
允许&#34;展望未来&#34;并且&#34;看后面&#34;功能regmatches
使用正则表达式拉出匹配的字符串。