Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слова на html страницы 
:(
    Опции темы
korob2001
Дата 28.12.2006, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Для начала, нужно выяснить, что есть слово, в твоём понимании? После можно менять этот шаблон:
Код

$content =~ s/\b(.*?)\b/++$res{lc($1)}/eg;

Например мы подразумеваем под словом, последовательность символов латинского алфавита.

Допустим у нас есть строка:
Код

This is a simple ------- test.

Нам необходимо найти такие слова как "This",  "is", "a", "simple", "test".  Изменим шаблон на такой:
Код

$content =~ s/\b([A-Za-z]+)\b/++$res{lc($1)}/eg;

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

$content =~ s/\b([A-Za-z]{2,})\b/++$res{lc($1)}/eg;

Теперь символ "a" не будет принят за слово.

Вобщем сначала нужно знать, что есть слово, в твоём случае.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Zuzu
Дата 29.12.2006, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.10.2006
Где: Екатеринбург

Репутация: 3
Всего: 4



Цитата(korob2001 @  28.12.2006,  13:32 Найти цитируемый пост)
Для начала, нужно выяснить, что есть слово, в твоём понимании?


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

Что-то типа:

Код

...
my $delimiters = ',.;!?';
$line =~ s/$delimiters/ /g;
...


Получилось в несколько проходов, зато, ИМХО, более наглядно.

--------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно.
PM   Вверх
korob2001
Дата 29.12.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Вероятность что-то пропустить (не учесть) гораздо больше, когда ты исключаешь то, что не нужно. Легче выделить именно то, что нужно. Хотя основное приимущество такого подхода состоит в том, что вероятность допустить ошибку снижается до нуля. Об этом помоему, можно почитать в книге "Разработка CGI приложений на Perl", где автор очень хорошо это объясняет. Правда там речь шла об очистке данных, полученных из сети.

ЗЫ: Я точно не помню, в какой именно книге об этом написано, потому написал ПОМОЕМУ. Но если интересно, то могу уточнить это.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.