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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование regexp, выделение подстрок 
:(
    Опции темы
Гость_Alex
Дата 17.5.2005, 13:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет!

У меня тут возникла задача:
есть строка, и в ней есть слово "pussy" (например). Нужно выделить из етой строки подстроку, которая была бы словом "pussy" плюс N слов (вариант: N символов) до и после етого слова.
т.е.:

my $base_string = "Mary had a very, very, very big pussy. It is a big black cat. Maybe.";

если N=3, результат:

very, very big pussy. It is a

Подскажите, please, как ето сделать, а то у меня пока не получаеться... smile smile


  Вверх
korob2001
Дата 18.5.2005, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не знаю насколько правильно я тебя понял, но может этот пример тебе поможет:
Код

#!/usr/bin/perl -w
use strict;
my $bef = 4; # Кол-во слов до искомого слова
my $aft = 4; # Кол-во слов после искомого слова
my $str = "Mary had a very, very, very big pussy. It is a big black cat. Maybe.";
my( $sub_str ) = $str =~ /((?:\w+?(?:\,|\.)?\s*?){$bef}(?:\bpussy\b)(?:\.+?)?(\s*?\w+?.?){$aft})/i;
print $sub_str;

Удачи, но этот шаблон расчитан на эту строку, для того, что бы он работал со всеми строками, его нужно немного доработать.

Удачи.


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


Unregistered











Спасибо тебе, korob2001, огромное!! Ты правильно все понял!

Жаль только Твой шаблон действительно не универсален smile . Ты не мог бы подсказать как к нему лучше подступиться, чтобы внести коректировку, а то он такой большой и страшный smile ? Ты до и после (?:\bpussy\b) написал разный код. Я про (?:\,|\.) Ето как-то связано з той строкой, что я написал (ну там про pussy...) или таким же будет и универсальный шаблон? Лучше работает выделение слов до ключевого слова, чем после.

Ты извини если вопрос очень тупой...
  Вверх
korob2001
Дата 19.5.2005, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

Я про (?:\,|\.) Ето как-то связано з той строкой, что я написал (ну там про pussy...) или таким же будет и универсальный шаблон?

Верно мыслишь.

Попробуй так:
Код

#!/usr/bin/perl -w
use strict;
my $bef = 4; # Кол-во слов до искомого слова
my $aft = 4; # Кол-во слов после искомого слова
my $str = "Mary had a very, very, very big pussy. It is a big black cat. Maybe.";
my( $sub_str ) = $str =~ /((?:\w+?(?:\W?)?\s*?){$bef}(?:\bpussy\b)(?:\.+?)?\s*?(\w+?(?:\W?)?\s+?){$aft})/i;
print $sub_str;

Если что-то не понятно и есть желание понять, дай знать.
Удачи.

Это сообщение отредактировал(а) korob2001 - 19.5.2005, 20:22


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
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.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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