![]() |
|
|
![]()
|
|
| prog2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 7.1.2008 Репутация: нет Всего: нет |
Знаком с руби очень мало. В универе дали задания все решил, только вот с одним проблема. Дан URL-адрес, требуется вывести только домен. Сделать это нужно макс 20-25 символов, т.е с использованием рег выражений. Бился над этой задачей очень долго и не смог ее одолеть. Помогите пож-та. Заранее благодарен.
Если это возможно сделать без рег. выражений - тоже можно главное чтобы длина программы была как можно короткой Это сообщение отредактировал(а) prog2 - 7.1.2008, 17:06 |
|||
|
||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Так сойдёт?
Добавлено через 8 минут и 52 секунды Или ещё компактнее:
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
| prog2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 7.1.2008 Репутация: нет Всего: нет |
А так что бы на выходе было не forum.vingrad.ru , а vingrad.ru
|
|||
|
||||
| source777 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Так тоже можно, только 20-25 символов у тебя лимит на весь(вместе с print url.) код или эксклюзивно для регулярного выражения? А то один регэксп уже 31 символ занимает, а сокращать его особо некуда...
Добавлено через 11 минут и 9 секунд На вдогонку вариант для scan
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||
|
|||||||
| prog2 |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 7.1.2008 Репутация: нет Всего: нет |
Выдает ошибку: C:/ruby/bin/1.rb:2: warning: regexp has `]' without escape C:/ruby/bin/1.rb:2: unmatched ): /]*?\\.)+([^\\/ C:/ruby/bin/1.rb:2: parse error, unexpected ']', expecting ')' Добавлено через 10 минут и 57 секунд Лимит без учета print url |
||||||||
|
|||||||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Ну ты сам то совсем в регэкспах не разбираешься что ли? это форум что-то обратный слеш продубрировал везде с какого-то перепугу...
24 символа без учёта границ получается... Добавлено через 1 минуту и 32 секунды Блин, опять обратный слеш дублируется... P.S. Модераторы ау, обратите внимание на баг... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
| prog2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 7.1.2008 Репутация: нет Всего: нет |
А по-другому как то можно эту задачу решить. Без регулярных выражений. Просто последний вариант то же не подходит. Это должно работать для любых URL адресов
|
|||
|
||||
| tek |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
Мой вариант :
результат : blah.site.ru Вырезать site.ru - можно, но в вашем случае врятле кто-то напишет универсальный регексп, который будет всегда вытягивать "site.ru" тем более в 25 символов. Вдруг там - www.yyy.zzz.ok.cz или http://www.xxx.yyy.ZZZ.NET.RU - а вам нужно "ZZZ.NET.RU". |
|||
|
||||
| shine |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 20.10.2006 Репутация: 3 Всего: 5 |
На самом деле все проще:
21 символ hint: ищем последнее минимальное вхождение последовательности символы+точка+символы между двумя слэшами и одним Это сообщение отредактировал(а) shine - 11.1.2008, 11:40 --------------------
An investment in knowledge always pays the best interest. © Benjamin Franklin |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
shine, твой пример тоже не сработает верно на http://www.xxx.yyy.ZZZ.NET.RU (с) tek и даже на http://vingrad.ru тоже не сработает ;) корректную реализацию модернизированной идеи, которую ты описал в хинте можно увидеть в моём посте чуть выше(она там 24 символа заняла)
Я думаю можно даже сказать, что в самом общем случае эта задача не разрешима, нужны какие-либо начальные допущения, либо полное снятие ограничений на размеры регэкспа, ибо он на целый экран потянет(за счёт перечисления нынедействующих доменных зон), а может и больше... Это сообщение отредактировал(а) source777 - 11.1.2008, 21:32 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| prog2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 7.1.2008 Репутация: нет Всего: нет |
Всем спасибо! Помогло -
|
|||
|
||||
| tek |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 28.12.2007 Репутация: нет Всего: нет |
prog2, хоршо конечно что вам помогло, но тема сисек не раскрыта
Не работат же пример shine если зона - net.ru, org.cn и т.п. |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
И вопрос к prog2, почему тогда мой вариант, работающий для более широкого класса допустимых URL, тебе не подошёл? -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| shine |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 137 Регистрация: 20.10.2006 Репутация: 3 Всего: 5 |
Так а я и не прошу мне давать медаль 'за раскрытие сисек' Твой вариант не будет работать если в url входит поддомен Вобщем, как тут уже говорилось, универсального короткого решения создать не получится по-любому. Мое помогло - я рад. --------------------
An investment in knowledge always pays the best interest. © Benjamin Franklin |
|||
|
||||
| 130 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 4.1.2007 Репутация: нет Всего: нет |
Вот так короче всего
Или:
|
||||
|
|||||
![]()
|
| Правила форума "Ruby: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |