读取文本文档中两个特定单词之间的行

时间:2015-07-01 09:47:19

标签: regex r grep gsub

我有以下表格的数据:

Trifle  
Beef gyoza with black vinegar dipping sauce  
8 Comments

我想提取Trifle8 Comments之间的界限。这里可以是任何数字。

2 个答案:

答案 0 :(得分:2)

使用regmatches

regmatches(x, gregexpr("\\bTrifle\\b.*\\n+\\K.*(?=\\n+.*8 Comments\\b)", x, perl=TRUE))

DEMO

一般情况。

regmatches(x, gregexpr("\\bTrifle\\b.*\\n+\\K.*(?=\\n+.*\\b\\d+\\h+Comments\\b)", x, perl=TRUE))

答案 1 :(得分:1)

另一种选择,使用trimws(?s)正则表达式标志,其中包含点所涵盖的字符集中的换行符:

pat <- "(?s)^.*Trifle(.+)8 Comments.*$"
trimws(gsub(pat, '\\1', x, perl=TRUE))
# [1] "Beef gyoza with black vinegar dipping sauce"