-1
我有很大的文件名,我想修剪它们。 文件名都是这样如何使用正则表达式修剪字符串?
dgfs_adf_vdsvs_sjfj_dbsd_vsdvv.txt
scs_adaca_vdscvs_fj_dsd_vsdvv.txt
我只是想保持第一仪表板和仪表板4之间的所有表达其翻译成:
adf_vdsvs_sjfj
adaca_vdscvs_fj
会有人帮助我?
我有很大的文件名,我想修剪它们。 文件名都是这样如何使用正则表达式修剪字符串?
dgfs_adf_vdsvs_sjfj_dbsd_vsdvv.txt
scs_adaca_vdscvs_fj_dsd_vsdvv.txt
我只是想保持第一仪表板和仪表板4之间的所有表达其翻译成:
adf_vdsvs_sjfj
adaca_vdscvs_fj
会有人帮助我?
您可以使用子,
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"
.*?
是非贪婪停靠匹配UTIL它找到的第一个匹配。所以^.*?_
将匹配所有字符到第一个下划线,同样它继续。
或
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
你能解释有点它是如何工作的? – user51661