Нужен regex для проверки имени файла
вид строки - "имя.расширение"
- Имя не больше 8 символов
- расширение не больше 3
- сама строка не больше 20 символов
почему файл a.in.txt выдает как подходящий при таком шаблоне:
^(([A-Za-z]){1,9}\.([A-Za-z]){1,4}){,21}$
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Шаблон ^([A-Za-z]{1,9}\.[A-Za-z]{1,4}){,21}$ (лишние подмаски удалены) находит совпадение в строках, которые целиком состоят из 0-21 повторов 1-9 букв, точки и 1-4 букв. См. пример работы своего выражения.
Используйте
^[A-Za-z]{1,8}\.[A-Za-z]{1,3}$
Подробности
^- начало строки[A-Za-z]{1,8}- от одной до восьми букв ASCII\.- символ точки[A-Za-z]{1,3}- от одной до трёх букв ASCII$- конец строки.
import re
filenames = ['in.txt','abcdEFGHI.htm']
for filename in filenames:
print(filename, bool(re.search(r'^[A-Za-z]{1,8}\.[A-Za-z]{1,3}$', filename)), sep = ' => ')
Результат:
in.txt => True
abcdEFGHI.htm => False