Шаблон регулярного выражения такой:
".*/.*/.*/.*/.*/.*/(.*)-\d{2}\.\d{2}\.\d{2}.\d{4}.*"
действительно трудно поддерживать.
Мне интересно, есть ли что-то вроде:
".*<userName>/.*<envName>/.*<serviceName>/.*<dataType>/.*<date>/.*<host>/(.*)-\d{2}\.\d{2}\.\d{2}.\d{4}.*<fileName>"
, чтобы помочь легче читать / понимать регулярные выражения?
Обновлено 2018-12-07
Спасибо за помощь @Liinux, он называется free-space , и простая демонстрационная версия Java будет:
public static void main(String[] args) {
String re = "(?x)"
+ "# (?x) is the free-spacing flag\n"
+ "#anything here between the first and last will be ignored\n"
+ "#in free-spacing mode, whitespace between regular expression tokens is ignored\n"
+ "(19|20\\d\\d) # year (group 1)\n"
+ "[-/\\.] # separator\n"
+ "(\\d{2}) # month (group 2)\n"
+ "[-/\\.] # separator\n"
+ "(\\d{2}) # day (group 3)";
Pattern pattern = Pattern.compile(re);
Stream.of("2018-12-07", "2018.12.07", "2018/12/07").forEach(aTest -> {
System.out.println("**************** Testing: " + aTest);
final Matcher matcher = pattern.matcher(aTest);
if (matcher.find()) {
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group - " + i + ": " + matcher.group(i));
}
}
});
}