-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