![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| alyam |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
например есть предложение:
первое пятидесятое мне нужно получить перв.пятидесят т.е. убрать окончание пытаюсь делать так: @item=split(/ /,$1); foreach $i (@item){ $i=substr($i,0,3);} $wpn=join('.',@item); не получается убрать только последние 2 символа у слова, потому что слова все неодинаковой длины. подскажите пожалуйста правильное решение Это сообщение отредактировал(а) alyam - 13.9.2006, 11:04 |
|||
|
||||
| Danissimo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
@item = split / /, $1;
foreach (@item) { chop; chop; } $wpn=join('.',@item); |
|||
|
||||
| alyam |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
получилось спасибо
Это сообщение отредактировал(а) alyam - 13.9.2006, 11:21 |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
а вот лучше ;)
Добавлено @ 11:27 alyam, память и время ;) экономия ё-маё... Это сообщение отредактировал(а) nitr - 13.9.2006, 11:28 |
|||
|
||||
| alyam |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
а в этой конструкции как слова в str объеденить через точку?
|
|||
|
||||
| nitr |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
ну к примеру так:
Добавлено @ 12:00 ну а если будет такая строка, то
Добавлено @ 12:00 это решение более универсально... ;) Добавлено @ 12:01 если считать такое сочетание слов Это сообщение отредактировал(а) nitr - 13.9.2006, 11:50 |
||||
|
|||||
| alyam |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
а если число слов в предложении неограничено и произвольно?
и если в предложении встречаются предлоги на в с со над, которые надо бы убрать. вообщем убрать слова, в которых число символов меньше 3 можно с помощью регулярных выражений сделать такое? Это сообщение отредактировал(а) alyam - 13.9.2006, 12:06 |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
alyam, создавай анализатор
|
|||
|
||||
| alyam |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
я не настолько хорошо знаю perl
|
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
alyam, как у тебя вообще получается такой текст, что за задачка такая?
|
|||
|
||||
| alyam |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
у меня в задаче вообще-то не встречается слов в предложении больше 5. но создать универсальный код, подходящий для любых предложений было бы лучше.
к тому же в твоем последнем примере слова объединяются точкой как пара. а надо полностью все слова объеденить |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
я как раз и делал как пару
Добавлено @ 12:14 используй предыдущий где две регулярки Добавлено @ 12:15 этот
|
|||
|
||||
| alyam |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 60 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
это нам преподаватель в университете такие задачи дает. зверюга )
|
|||
|
||||
| Danissimo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 14.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Если препод, то я бы рекомендовал самому разобраться. Если, конечно, программировать собираешься в будущем.
По поводу задачи. Давай переформулируем условие: в предложении, состоящим из максимум 5 слов (включая предлоги, союзы, частицы и пр.), выделить числительные и, отрезав у них последние две буквы (вероятно, окончания), объединить в одну строку, разделяя обрезанные числительные точкой. На что похоже? На семантический анализ. Регулфрные выражения в общем виде не решают подобной задачи. Они слишком "слабые". Регулярные выражения способны анализировать регулярные языки. Твоя же задача относится к минимум контекстно-свободным языкам. Максимум -- к контекстно-зависимым. Так что в общем случае регулярные выражения не помогут. nitr был прав, говоря, что тебе следует построить анализатор. Или не замахиваться на общий случай =) |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
для данного, поставленного вопроса уже 3 ответа
а если это учёба, то имхо лекции были по теме ;) или спроси курс по-старше |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |