提取以特定的预定义字符串正则表达式开头的行?

时间:2019-05-05 09:05:27

标签: r regex

给出:

"kuku": "kdfjsfgsljfddnlfdsf"
"bubu": "slfjsdjlkfndvsdl;nsdf;vlankvdfs;lkndkfv"
"title": "dflkbjvndjlvbdknbdlkbvjndlkfdnbdlkbjdnb"
"tutu": "svfrol"
"lala": "dbd4431"
"title": "dfvbdfv"

我想提取所有以“ title”开头的行。

请告知我该怎么做(我正在使用R,并且需要一个正则表达式)。

我正在尝试:

(["'])(title)\1: 

并尝试使用它。

2 个答案:

答案 0 :(得分:2)

您可以使用类似的内容:

^"title":.*$

使用https://regex101.com输入后,它看起来像这样:

enter image description here

说明:

^表示行首

"title":只是字面意思

.表示任意字符

*表示它可以发生零次或更多次

$表示行尾

答案 1 :(得分:2)

一种选择是将文本文件读取为R中的数据框

df <- read.table(text = '"kuku": "kdfjsfgsljfddnlfdsf"
       "bubu": "slfjsdjlkfndvsdl;nsdf;vlankvdfs;lkndkfv"
       "title": "dflkbjvndjlvbdknbdlkbvjndlkfdnbdlkbjdnb"
       "tutu": "svfrol"
       "lala": "dbd4431"
       "title": "dfvbdfv"', sep = ":", stringsAsFactors = FALSE, strip.white = TRUE)

,然后选择第一列以"title"开头的行

df[grepl("^title", df$V1), ]

#     V1                                      V2
#3 title dflkbjvndjlvbdknbdlkbvjndlkfdnbdlkbjdnb
#6 title                                 dfvbdfv

如果您希望将其作为原始字符串而不是不同的列,则可以将它们paste退回

do.call(paste, c(df[grepl("^title", df$V1), ], sep = ":"))
#[1] "title:dflkbjvndjlvbdknbdlkbvjndlkfdnbdlkbjdnb" "title:dfvbdfv"