Вы хотите сопоставить , чтобы проверить, отформатировано ли имя файла, как ожидалось, или извлечь дату и UUID из имени файла?
Если вы просто хотите проверить имя файла, регулярное выражение будет выглядеть следующим образом:
.*-[0-9]{8}-[0-9a-f]{32}\.[^.]+\.gz
(Новое в регулярном выражении? Имейте в виду, что эти обратные слеши требуются самим регулярным выражением, но не компилятором java. В современных IDE дополнительные обратные слэши должен автоматически добавляться при вставке в ваш код. Если нет, замените любые \
на \\
.)
Объясните:
Соответствие any_length_alpha_numeric_prefix
и разделитель: .*
для произвольного содержимого и -
для самого себя. .
в регулярном выражении соответствует чему угодно.
yyyyMMdd
и разделитель: здесь мы используем [0-9]{8}-
для простоты, чтобы соответствовать любым 8 цифрам вместо строго допустимых дат. Для строгой проверки даты в Inte rnet.
есть много значений: для UUID и точки: UUID составляет 32 символа (0 ~ f шестнадцатеричных цифр) без разделителей. Так что [0-9a-f]{32}
будет достаточно. Затем \.
, точка экранируется, поэтому теперь она совпадает.
extensionType
: Мы предполагаем, что это произвольная последовательность без точек. Поэтому мы используем [^.]+
, чтобы соответствовать одному или нескольким точечным символам. Вы также можете жестко закодировать его в csv
вместо этого, если известно, что все файлы являются CSV-файлами.
Расширение .gz
: Используйте \.gz
.