Perl search

Ответить
Аватара пользователя
Guest

Perl search

Сообщение Guest »

Положим есть файл test.txt и в нём есть такие строки:

"Маша мыла раму"

"Мама мыла Машу"

"Тест"

Так вот надо чтоб програма проверяля каждую строку на наличие определённого слова и если слово "мыла" присутствует выводила бы строку на экран. В этом случае програма должна вывести:

Маша мыла раму

Мама мыла Машу

Как это реализовать? Инетресует сам маханизм поиска. Буду рад полезным ссылкам. Заранее благодарен.
Аватара пользователя
antonym

Re: Perl search

Сообщение antonym »

Код:

Код: Выделить всё

open (FL, 'text.txt');
while()
{
if (index($_,'мыла')>=0) {print $_}
}
close FL;

Это самый дубовый вариант, не учитывающий ни кодировки, ни регистр символов. И вообще, использующий переменную по умолчанию :-)



По поводу поиска посмотрите хотя бы
это
Аватара пользователя
Guest

Re: Perl search

Сообщение Guest »

Большое спасибо :-)
Аватара пользователя
mrcnn

Re: Perl search

Сообщение mrcnn »

другой вариант поиска -- *с использованием регулярных выражений. Регулярные выражения - очень мощный инструмент работы с текстом.





Код:

Код: Выделить всё

open (FL, 'text.txt'); 
while() { 
 if ($_ =~ /мыла/) {
 *print $_;}
} 
close FL;

если надо "мыла" заменить на "мало" используешь нечто подобное:





Код:

Код: Выделить всё

open (FL, 'text.txt'); 
while() { 
 if ($_=~s/мыла/мало/) {
 *print $_;}
} 
close FL;

в винде это сработает нормально только если файл test.txt в кодировке dos. *если в koi или win потребуется перекодировка искомой строки или считываемого файла.

Перекодировку можно реализовать тоже с помощью регулярных выражений.



[s]Исправлено: mrcnn, 7:41 14-03-2004[/s]
Ответить

Вернуться в «Программирование и базы данных»