a <- "X/ZHEB100/TKN_VAR29380_timely_p1.txt" a2 <- sub("^.*/([A-Z]{3})_VAR\\d+_timely(_[^_.]+)?\\.[^.]*$", "\\1\\2", a) a2 b <- "X/ZHEB100/ZHN_VAR29380_timely.txt" b2 <- sub("^.*/([A-Z]{3})_VAR\\d+_timely(_[^_.]+)?\\.[^.]*$", "\\1\\2", b) b2