Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Perl search (http://forum.oszone.net/showthread.php?t=29923)

Guest 09-03-2004 11:22 206381

Положим есть файл test.txt и в нём есть такие строки:
"Маша мыла раму"
"Мама мыла Машу"
"Тест"
Так вот надо чтоб програма проверяля каждую строку на наличие определённого слова и если слово "мыла" присутствует выводила бы строку на экран. В этом случае програма должна вывести:
Маша мыла раму
Мама мыла Машу
Как это реализовать? Инетресует сам маханизм поиска. Буду рад полезным ссылкам. Заранее благодарен.

antonym 09-03-2004 11:59 206382

Код:

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

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

По поводу поиска посмотрите хотя бы это

Guest 09-03-2004 12:35 206383

Большое спасибо :-)

mrcnn 14-03-2004 07:39 206384

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

Код:

open (FL, 'text.txt');

while(<FL>) {
 if ($_ =~ /мыла/) {
 *print $_;}
}
close FL;

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

Код:

open (FL, 'text.txt');

while(<FL>) {
 if ($_=~s/мыла/мало/) {
 *print $_;}
}
close FL;

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

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


Время: 22:45.

Время: 22:45.
© OSzone.net 2001-