Положим есть файл test.txt и в нём есть такие строки:
"Маша мыла раму"
"Мама мыла Машу"
"Тест"
Так вот надо чтоб програма проверяля каждую строку на наличие определённого слова и если слово "мыла" присутствует выводила бы строку на экран. В этом случае програма должна вывести:
Маша мыла раму
Мама мыла Машу
Как это реализовать? Инетресует сам маханизм поиска. Буду рад полезным ссылкам. Заранее благодарен.
Perl search
-
antonym
Re: Perl search
Код:
Это самый дубовый вариант, не учитывающий ни кодировки, ни регистр символов. И вообще, использующий переменную по умолчанию
По поводу поиска посмотрите хотя бы
Код: Выделить всё
open (FL, 'text.txt');
while()
{
if (index($_,'мыла')>=0) {print $_}
}
close FL;Это самый дубовый вариант, не учитывающий ни кодировки, ни регистр символов. И вообще, использующий переменную по умолчанию
По поводу поиска посмотрите хотя бы
это
-
mrcnn
Re: Perl search
другой вариант поиска -- *с использованием регулярных выражений. Регулярные выражения - очень мощный инструмент работы с текстом.
Код:
если надо "мыла" заменить на "мало" используешь нечто подобное:
Код:
в винде это сработает нормально только если файл test.txt в кодировке dos. *если в koi или win потребуется перекодировка искомой строки или считываемого файла.
Перекодировку можно реализовать тоже с помощью регулярных выражений.
[s]Исправлено: mrcnn, 7:41 14-03-2004[/s]
Код:
Код: Выделить всё
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]