Помогите написать regex
Помогите написать regex для total commander'a (там вроде есть свои отличия) для массового переименования файлов по следующим условиям.
Образцы текста
1234567
6556af15ffe17d5df7418f26AM10915The20Aristocratlo
6556af15ffe17d5df7418f27AM10918A20Man20of20Many20Hatslo
6556af15ffe17d5df7418f33AM10902Chief20InspectorNoSoloVlnlo
6556af15ffe17d5df7418f35AM10905BupkisNoSoloClarinetlo
6556af15ffe17d5df7418f36AM10907The20Earl20of20KentuckyNoBanjolo
6556af15ffe17d5df7418f38AM10910Danse20MacabreNoSoloVlnlo
6556af15ffe17d5df7418f40AM10922Barber20of20SevilleNoGtrslo
В начале строки идут любые цифры и буквы до "AM"
После "AM" идут только цифры до собственно слов
Слова идут как слитно, так и через "20" вместо пробелов
Заканчивается строка всегда на "lo"
В общем-то проблема в том как заменить "20" на пробелы и как это сделать в TC. Общий regex вроде такой, но как заменить "20" (или не захватывать их), я хз. Я понимаю, что можно сделать regex-replace, а потом уже заменить 20 на пробелы, но хотелось бы всё сделать одним шагом.
1
`\w+AM\d+(.*?)lo`
По дате
По рейтингу
-
12345678910111213141516171819202122232425262728293031
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import re
# Функция для переименования файлов в соответствии с заданными условиями
def rename_files(path):
# Получаем список файлов в указанной директории
files = os.listdir(path)
# Регулярное выражение для поиска соответствующих файлов
pattern = re.compile(r'(\d+)AM(\d+)(.*?)(?=lo)')
# Проходим по всем файлам в директории
for file in files:
# Проверяем, является ли текущий файл директорией
if os.path.isfile(os.path.join(path, file)):
# Применяем регулярное выражение к имени файла
new_name = re.sub(pattern, r'\1AM\2\3', file)
# Полный путь к старому файлу
old_path = os.path.join(path, file)
# Полный путь к новому файлу
new_path = os.path.join(path, new_name)
# Переименовываем файл
os.rename(old_path, new_path)
print(f'Renamed {old_path} to {new_path}')
# Вызываем функцию для переименования файлов в указанной директории
rename_files('/path/to/your/directory')
если '20' встречается ТОЛЬКО окруженная буквами, то проще всего сделать вот так

Больше по теме