簡體   English   中英

正則表達式:在兩個單詞之間得到文本(在R中)

[英]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”在“關鍵字”之前查找內容
  • gregexprstring查找給定的正則表達式
  • perl = TRUE允許“向前看”和“向后看”功能
  • regmatches使用正則表達式拉出匹配的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM