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

Regular expression in R to capture information inside subsequent quotation marks

我在 R 中有一个数据文件,例如以下配置:

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

对于文件中每次出现的 "Name",我只需要提取 "John Brown" 部分。文件很乱。我需要一个将提取所有名称的正则表达式,即在 "Name:" 之后给我中间的所有内容,但不包括随后的引号。恐怕,尽管查看了正则表达式的示例,但我找不到符合我的问题的示例。感谢您的帮助。

一些示例数据:

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

"We want this":

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:")(之后没有,目前return NA

(更多的测试可能会有用,也许可以抓住 c("Name:","Name:"),但这只是我认为的单元测试人员。