R中的正则表达式捕获后续引号内的信息

时间:2017-11-04 23:02:46

标签: r regex stringr

我在R中有一个数据文件,其中包含以下配置:

 [53] "Name:"                                                                                                                                                                                                                                                                                                                                                                                                                                      
 [54] "John Brown" 

对于文件中“Name”的每次出现,我只需要提取“John Brown”部分。该文件非常混乱。我需要一个能够提取所有名称的正则表达式,即在“Name:”之后给我一切,但不包括后续的引号。我担心,尽管通过正则表达式的例子,我找不到符合我的问题的例子。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

一些示例数据:

txt <- c("ignore this", "Name:", "James Brown", "American singer", "songwriter", "record producer",
         "Name:", "Bessie Smith", "American blues singer")

“我们想要这个”:

txt[1 + grep("Name:", txt)]
# [1] "James Brown"  "Bessie Smith"

如果找不到任何内容怎么办?

txt[1 + grep("name:", txt)]
# character(0)

我的单元测试员建议您可能想要考虑一些角落情况:

  • c("Name:", "Name:")
  • c("Name:", "")(使用Filter(nzchar, ...)轻松处理,具体取决于几项内容)
  • c(..., "Name:")(之后没有任何内容,目前会返回NA

(更多测试可能有用,也许是为了捕捉c("Name:","Name:"),但这只是我思考的单位测试者。

相关问题