R 如何使用正则表达式修剪字符串?

R 如何使用正则表达式修剪字符串?,r,R,我有非常大的文件名,我想修剪它们。 文件名如下 dgfs_adf_vdsvs_sjfj_dbsd_vsdvv.txt scs_adaca_vdscvs_fj_dsd_vsdvv.txt 我只想保留第一个破折号和第四个破折号之间的所有表达式,它可以转换为: adf_vdsvs_sjfj adaca_vdscvs_fj 有人能帮我吗?你可以使用sub x <- c("dgfs_adf_vdsvs_sjfj_dbsd_vsdvv.txt", "scs_adaca_vdscvs_fj_dsd_

我有非常大的文件名,我想修剪它们。 文件名如下

dgfs_adf_vdsvs_sjfj_dbsd_vsdvv.txt
scs_adaca_vdscvs_fj_dsd_vsdvv.txt
我只想保留第一个破折号和第四个破折号之间的所有表达式,它可以转换为:

adf_vdsvs_sjfj
adaca_vdscvs_fj
有人能帮我吗?

你可以使用sub

x <- c("dgfs_adf_vdsvs_sjfj_dbsd_vsdvv.txt",
"scs_adaca_vdscvs_fj_dsd_vsdvv.txt")
sub("^.*?_(.*?_.*?_.*?)_.*", "\\1", x)
# [1] "adf_vdsvs_sjfj"  "adaca_vdscvs_fj"
sapply(strsplit(x, "_"), function(x) paste(c(x[2],x[3],x[4]),collapse="_"))
[1] "adf_vdsvs_sjfj"  "adaca_vdscvs_fj"
x = "dgfs_adf_vdsvs_sjfj_dbsd_vsdvv.txt" # long name
y = unlist(strsplit(x, "_")) # split on "_" and make vector
z = paste(y[2], y[3], y[4], sep = "_")  # join elements 2-4