![]() |
Модераторы: ginnie |
![]() ![]() ![]() |
|
Logo |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 5 Всего: 10 |
Ну да, я и поправил только некорректное не обявленное значение переменной.
Верно, и если она меньше $maxn... Сама регуляка только делает "результат, вместе троеточием должен быть не длиннее указанной числа символов". Можно поставить if на длинну строки в коде, хотя и регуляркой тоже можно
|
||||||
|
|||||||
Logo |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 5 Всего: 10 |
Одной регуляркой, и с учетом пожеланий amg. Хотя это уже изврат, наверное
![]()
Хотя на мой взгляд, если разбивать, то не по длине слова, а по длине части слова, оказавшейся целой.
Про это непонял Это сообщение отредактировал(а) Logo - 10.10.2009, 13:54 |
||||||
|
|||||||
ad280379 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.12.2009 Репутация: нет Всего: нет |
помоему это есть наиболее правильное решение на основе регулярных выражений. единственно не понимаю (т.е. считаю что не правильно) указание \S (вместо \s) и не понятно зачем нижняя граница {15,24} я переписал это так (в данном решении N количество выводимых символов) формат - prg_name.pl N "Hello and welcome dears" результат при N=10 будет "Hello and ..." ---code--- $text = $ARGV[1]; $ltext = length($ARGV[1]); print "[$ltext],[$ARGV[0]],$text" if($text=~m/^(.{0,$ARGV[0]}\s*)\b/ ? ($text="$1...") : ($text.="...")); ---code end--- конструктивная критика приветствуется ![]() |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 5 Всего: 10 |
Очень коротко и аргументировано ![]() |
|||
|
||||
ad280379 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.12.2009 Репутация: нет Всего: нет |
ну... вы же Бывалый... вообще должны с двух слов понимать |
||||
|
|||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: нет Всего: 50 |
Господа!
По моему, мы несколько неправильно понимаем задачу. Насколько я себе представляю, она состоит не в том, чтобы написать код, делающий сформулированные в 1-м посте вещи, и даже не в том, чтобы этот код был самым коротким/изящным, а в том, чтобы сделать это только ругуляркой. И такая постановка задачи, IMHO, так пока и не решенной, оправдана. Во-первых, тогда решение будет почти прямо переносимо на любой ЯП, где есть PCRE, во-вторых, существуют программы a'la grep, которым на вход нужно давать регулярное выражение и ничего кроме него. |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 5 Всего: 10 |
А как же мой код ![]() |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: нет Всего: 50 |
||||
|
||||
ad280379 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 2.12.2009 Репутация: нет Всего: нет |
А как же мой код ![]() ![]() ![]() ![]() |
||||
|
|||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |