r - 正则表达式从字符串中提取两个特定的单词
问题描述
我正在解析一些文件,并计划从文件中的某个位置提取信息,但由于特殊字符而失败。我需要的单词仍然包含在文件名中,但其中还有其他内容。
我假设您可以使用正确的正则表达式提取那些,但我无法这样做。原点是最后一个和倒数第二个下划线之间的单词。目标是 .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
解决方案
您可以使用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"
推荐阅读
- highcharts - 高图表 X 轴中的多个值
- python - 按项目中的子字符串拆分列表并保留分隔符
- python - 根据另一个数组更改列的值
- java - 通过 JAXB 解析 XML 的可选命名空间
- dottrace - 为什么 dottrace 显着提高了我的 Web 应用程序的启动时间?
- java - Netbeans 在生成的代码中看不到 java.awt.event.ActionEvent
- javascript - 如何在警报弹出窗口中单击“确定”按钮?
- php - Paypal - 订阅 - 创建产品
- android - 如何知道该应用已在 Android Q 中暂停?
- google-drive-api - 无法从 G Suite 市场应用程序获得范围权限