Решение 1: Сопоставление / извлечение
Вы можете захватить \w+
шаблон внутри _
s, за которым следует [digits][_][digits][.][extension]
:
Pattern rexExp = Pattern.compile("_(\\w+)_\\d+_\\d+\\.[^.]*$");
См. Регулярное выражение демо
Подробности
_
- подчеркивание (\w+)
- 1+ букв / цифр / _
_
- подчеркивание \d+
- 1+ цифр _\d+
- _
и 1+ цифр \.
- точка [^.]*
- 0+ символов, отличных от .
$
- конец строки.
OnlineДемонстрационная версия Java :
String s = "Doc201810011052053_fotoAssicurazioneCartaceo_3962128_943000.jpg";
Pattern rexExp = Pattern.compile("_(\\w+)_\\d+_\\d+\\.[^.]*$");
Matcher matcher = rexExp.matcher(s);
if (matcher.find()){
System.out.println(matcher.group(1));
} // => fotoAssicurazioneCartaceo
Решение 2. Обрезание ненужного префикса / суффикса
Вы можете удалить все с самого начала до первого _
, включая его, и [digits][_][digits][.][extension]
в конце:
.replaceAll("^[^_]*_|_\\d+_\\d+\\.[^.]*$", "")
См. эту демонстрационную версию регулярного выражения
Подробности
^[^_]*_
-начало строки, 0+ символов, отличных от _
, а затем _
|
- или _\d+_\d+\.[^.]*$
- _
, 1+ цифр, _
,1+ цифры, .
и затем 0+ символов, отличных от .
до конца строки.