![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
простой, наверное, вопрос, но возникла проблема:
мне нужно проверить формат имени файла. файл должен быть таким: name1_name2_name3.txt причем список каждого Name прилагается. например: name1 = piter или moskva или saratov как тогда будет выглядеть регулярное выражение?
это будет правильно? есть сомнение. может надо отдельно каждое слово? у меня просто такой пример есть. |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Вопрос не такой и простой, если возможные значения полей name брать именно из списка.
Вот такое решение, которое легко расширить до любого кол-ва полей name: строку $regexp можно формировать в цикле.
Можно раскомментировать # print "$regexp\n"; и посмотреть, как выглядит регулярное выражение. PS Кажется, подсветка кода глючит Это сообщение отредактировал(а) amg - 22.9.2006, 13:33 |
|||
|
||||
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
хорошо,если у меня фиксированное число полей, в каждом по три? мой вариант пойдет?
Добавлено @ 13:48 и еще кстати, у меня третье name може содержать несколько значений! т.е. написанных без пробелов championforeverblabla. Добавлено @ 13:50 и заодно, потом мне надо будет их еще и рапознать, т.е. выделить каждое слово отдельно! это как можно сделать? что-то слышала про функцию split, но вроде это не тот вариант. Это сообщение отредактировал(а) Valeria - 22.9.2006, 13:56 |
|||
|
||||
| amg |
|
||||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Valeria, к сожадению, Ваш вариант не годится. По-порядку.
[pitermoskvasaratov] - это 1 символ, представляющих собой одну из перечисленных в квадратных скобках букв. Т.е kiev, например, тоже пройдет. Нужно так: (piter|moskva|saratov) Потом, предположим, сформировали Вы строку ${FILE_FORMAT}. Дальше единственное, что с ней можно сделать - это воткнуть внутрь eval. Зачем, если при формировании строки нет интерполяции переменных? (Использование eval, вообще говоря, небезопасно, без необходимости не нужно). Лучше сразу составить регулярное выражение
Ну и наконец (просто придирка), основоположники рекомендуют заглавными буквами называть только константы. Добавлено @ 14:23
Добавлено @ 14:32 Чтобы использовать split, нужно, чтобы в строку был какой нибудь признак, представимый регулярным выражением, и тогда по этому признаку строка разделится. Например, пусть этим признаком будет запятая, после которой могут быть пробелы. Тогда
|
||||||||||
|
|||||||||||
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
сделать %name
и разобрать имя файла:
ну вот так как-нибудь?! |
|||
|
||||
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
спасибо amg, у меня все получилось.
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |