【发布时间】:2020-12-02 21:14:22
【问题描述】:
我有一个类似“ABC_Something_Filename”的字符串。如何在 R 中将其拆分为“ABC_Something”和“文件名”?
我不想删除任何东西。我想要两个组件 - 在最后一个下划线之前和之后。
编辑:我尝试使用提到的列分隔,但这对于我的用例来说过于广泛。因此,我找到了一个简单的分割字符串的正则表达式替代方法
【问题讨论】:
-
使用群组捕获?你能说明失败的原因吗?
我有一个类似“ABC_Something_Filename”的字符串。如何在 R 中将其拆分为“ABC_Something”和“文件名”?
我不想删除任何东西。我想要两个组件 - 在最后一个下划线之前和之后。
编辑:我尝试使用提到的列分隔,但这对于我的用例来说过于广泛。因此,我找到了一个简单的分割字符串的正则表达式替代方法
【问题讨论】:
一种选择是使用 strsplit 和负前瞻,它断言要拆分的下划线是输入中的最后一个:
input <- "ABC_Something_Filename"
parts <- strsplit(input, "_(?!.*_)", perl=TRUE)[[1]]
parts
[1] "ABC_Something" "Filename"
【讨论】:
您可以使用str_match 并分两组捕获数据。
x <- 'ABC_Something_Filename'
stringr::str_match(x, '(.*)_(.*)')[, -1]
#[1] "ABC_Something" "Filename"
【讨论】: