[英]regex: get text between two words (in R)
我有一個文本文檔,我試圖在“抽象”和“關鍵字”(在R中)之間獲取文本。 這是我正在使用的代碼:
gsub(".*abstract\\s*|keywords.*", "\\1", string)
然而,這不起作用,因為文本中的其他地方出現了“抽象”這個詞,所以我把它變得像這樣非貪婪(添加?在摘要前面)
gsub(".*?abstract\\s*|keywords.*", "\\1", string)
但由於某種原因,它現在需要“抽象”和“關鍵字”之間的文本(這是我想要的),但也是文本從文本中出現的第二個“抽象”開始,一直到最后。 有任何想法嗎?
它看起來不像你在你的搜索詞中捕獲任何東西,你只需要一些()
在那里實際抓取一些東西,所以\\\\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"
我認為這應該會給你你想要的東西:
regmatches(string, gregexpr("(?<=abstract).*(?=keywords)", string, perl = TRUE))
它能做什么:
(?<=abstract)
使用“向前看”功能在“抽象”一詞后面找到東西 .*
匹配任意數量的關鍵字 (?=keywords)
使用“look behind”在“關鍵字”之前查找內容 gregexpr
在string
查找給定的正則表達式 perl = TRUE
允許“向前看”和“向后看”功能 regmatches
使用正則表達式拉出匹配的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.