import java.util.Date;  
import java.util.regex.Pattern;
import java.util.regex.Matcher; 
import java.text.SimpleDateFormat;

public class Main { 
   public static void main(String[] args) throws Exception {
      String filename = "19882012ABCseptemberDEF03HIJ12KLM0156_249.zip";
String regex = "(.*?)([0-9]{4})([^0-9]*?)([a-z]+)(.*?)([0-9]{2})(.*?)([0-9]{2})(.*?)([0-9]{4})_([^.]+)[.]zip";
Matcher m = Pattern.compile(regex).matcher(filename);
if (m.matches()) {
   System.out.println("it does match");
    String dateString =m.group(2) + "-" + m.group(4) + "-" + m.group(6) + " " + m.group(8) + m.group(10);
    System.out.println("extracted: " + dateString);
    Date date = new SimpleDateFormat("yyyy-MMM-dd HHmmss").parse(dateString);
    // here you go with your date
    System.out.println(date);
} else {
   System.out.println("it does not match");
}
   }

}