Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.19;
Скачать: CL | DM;

Вниз

Части имени файла по шаблону   Найти похожие ветки 

 
anod   (2003-12-04 22:30) [0]

Здраствуйте,
Я довольно долго думаю над этим,но никак не найду ничего универсального.
Есть у меня шаблон, например (но необязательно именно этот, думаю видели в программах такие) " %tracknum%. %artist% - %title%"
Есть имя файла: "16. Чиж и Ко - Есть!.mp3"
Ну соответственно надо создать массив в котором нужным элементам шаблона соответствовал нужны элемент имени файла.
Если кто-то встречал алгоритм или есть какие либо идеи по алгоритму, поделитесь, пожалуйста...


 
panov   (2003-12-04 22:39) [1]

Шаблону может соответствовать толтько вся строка с именем файла.
Сложно в Windows определить элементы имени.
даже в твоем примере не выделить со 100% уверенностью элементы.

Хотя здесь есть закономерность, но решение не будет универсальным.

" 16. Чиж и Ко - Есть!.mp3"
Этот элемент понятен - выделяем с начала строки до первой точки.

"16. Чиж и Ко - Есть!.mp3"
Этот уже представляет сложность, так как в названии группы может встретиться тире. Решением будет искать от первой точки до последнего "тире".

"16. Чиж и Ко - Есть!.mp3"
Этот элемент тоже просто - от последнего "тире" до последней точки в имени.


 
anod   (2003-12-04 22:58) [2]

2panov
>"16. Чиж и Ко - Есть!.mp3"
>Этот элемент понятен - выделяем с начала строки до первой точки.
В том то и проблема, шаблон устанавливается юзером, можеть быть что угодно, у меня есть предположение что надо вырезать исходя из количества символов между элементами шаблона


 
Ломброзо   (2003-12-04 23:38) [3]

ВАм надо принять решение - или писать некоторое время парсер шаблона, или использовать движок регулярных выражений и обучить пользователей основам работы с оным.


 
Ломброзо   (2003-12-04 23:40) [4]

и пускай сам сидит мучается!

^(\d+)\.\s+(.*)(\.mp3)$


 
anod   (2003-12-05 01:11) [5]

А в делфи есть регулярные выражения? не знал.
А что насчет парсера - именно его мне и надо написать, может где инфу взять полезную о стандартных алгоритмах (если таковые имеются)


 
Ломброзо   (2003-12-05 10:24) [6]

Статейка по конечным автоматам на RSDN.ru


 
anod   (2003-12-06 01:03) [7]

2 Ломброзо
Спасибо, за наводку...

Почитав, сделал что-то похожее на парсер - есть только одна глобальная проблема проблема, допустим есть шаблон:
%tracknum%. %artist% - %title%
и строка:
36. Чиж - Ко - Есть!
(Парсер примет за %artist% Чиж , а за %title% Ко - Есть!
Есть ли возможность вообще обработать эту ситуацию???
(наверно если только строку и шаблон одновременно рассматривать с двух сторон??)


 
Ломброзо   (2003-12-06 01:45) [8]

В теории регулярных выражений это называется "жадность" и "скупость". Жадный поиск захватывает с текущей позиции по максимуму до конца строки, потом в цикле сдвигает указатель на один символ в начало, то тех пор, пока не будет найдено совпадение, соответствующее шаблону. Скупой поиск наоборот, сдвигает в цикле указатель от текущей позиции в сторону конца строки до совпадения.
например дана строка

aa bb aa bb aa

Вот такое регулярное выражение ("жадное"):
[ aa.*bb ]
найдёт совпадение aa bb aa bb

, а такое ("скупое"):
[ aa.*?bb ]
найдёт aa bb


 
Ломброзо   (2003-12-06 01:46) [9]

.* - означает "ноль и больше любых символов c жадным поиском"
.*? - "ноль и больше любых символов cо скупым поиском"


 
anod   (2003-12-06 02:30) [10]

ok, а если так:
36. Чиж - Ко - Ес - ть!


 
anod   (2003-12-06 02:32) [11]

Всмысле, что не .* не .*? получается не подходит - здесь в принципе нельзя выловитб правду.
Но насчет рекомендации в случае с именами файлов что лучше,
> ("жадное")
or
> ("скупое")
??



Страницы: 1 вся ветка

Текущий архив: 2003.12.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.009 c
3-61955
Vemer
2003-11-26 16:48
2003.12.19
Проблемы с UNION


3-61973
FreeLancer
2003-11-26 12:05
2003.12.19
Как отучить БДЕ просить индексный файл


6-62175
Vygantas
2003-10-20 21:17
2003.12.19
Клиент ждет пока появится сервер.


3-61948
Vlad
2003-11-26 18:33
2003.12.19
Кодировка в IB


4-62330
Velocity
2003-10-17 06:58
2003.12.19
Вызов DLL из Excel VBA (СРОЧНО ! ОЧЕНЬ ВАЖНО !)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский