Если ваше имя файла не может содержать последовательные дефисы, а не в начале или в конце, вы можете использовать группу захвата для того, что вы хотите сохранить соответствие [a-z]+
, за которым следует повторяющийся шаблон, чтобы убедиться, что дефис не находится вконец.
Затем сопоставьте то, что вы хотите удалить, снова сопоставив цифры -
и 1+, а затем повторяющийся шаблон, чтобы сопоставить точку и цифру, чтобы не было последовательных точек, а не вначало и конец.
В конце используйте положительный прогноз, чтобы утверждать, что справа: .war
Если само ваше имя файла может также содержать символы слов, такие как цифры и подчеркиваниеВы также можете использовать \w+
.
. В качестве замены используйте то, что вы хотите сохранить, что входит в первую группу захвата \1
(\w+(?:-\w+)*)-\d+(?:\.\d+)*(?=\.war\b)
Пояснение
(
Группа захвата 1 \w+(?:-\w+)*
Совпадение 1+ слов с последующими 0+ раз -
и 1+ слов
)
Закрыть nдля группы захвата -\d+
Совпадение -
и цифры 1+ (?:\.\d+)*
Повторить 0+ раз, сопоставляя цифры .
и 1+ (?=\.war\b)
Позитивный взгляд, утверждайте, что прямо справа - .war
, за которым следует граница слова, чтобы предотвратить войну как часть более крупного слова
Regex demo