首页 > 解决方案 > 正则表达式从字符串中提取两个特定的单词

问题描述

我正在解析一些文件,并计划从文件中的某个位置提取信息,但由于特殊字符而失败。我需要的单词仍然包含在文件名中,但其中还有其他内容。

我假设您可以使用正确的正则表达式提取那些,但我无法这样做。原点是最后一个和倒数第二个下划线之间的单词。目标是 .rds 和最后一个下划线之间的单词

name1<-"2020-06-15 11_41_40_Magdeburg_Bitterfeld-Wolfen.rds"
name2<-"2020-06-15 11_41_53_Niebüll_Sylt OT Westerland.rds"
name3<-"2020-06-15 11_41_57_Augsburg_Düsseldorf.rds"

我分别解析每个文件并提供了三个示例。我希望

name1_orgin<-"Magdeburg"
name1_dest<- "Bitterfeld-Wolfen"
name2_orgin<-"Niebüll"
name2_dest<- "Sylt OT Westerland"
name3_orgin<-"Augsburg"
name3_dest<- "Düsseldorf

标签: rsplitstrsplit

解决方案


您可以使用str_match

stringr::str_match(c(name1, name2, name3), '.*_(.*)_(.*)\\.rds')[, -1]

#     [,1]        [,2]                
#[1,] "Magdeburg" "Bitterfeld-Wolfen" 
#[2,] "Niebüll"   "Sylt OT Westerland"
#[3,] "Augsburg"  "Düsseldorf"        

推荐阅读