![]() |
Парсер Txt файла
Доброго времени суток .
если у кого есть минутка , напишите плиз парсер который будет парсить текстовый файл вида : Код:
123@mail.ruСпасибо. |
open(FILE, '<incom.txt');
while(<FILE>) { print $_ if $_ =~ /rambler/; } юзать C:\>pars.pl > выходной файл |
Спасибо огромное
|
PHP код:
|
PHP код:
Имхо перл в самый раз, а пшп тут, так скажем, отсасывает |
Цитата:
Код:
#!perl |
Хм...не обязательно :)....это не тупое сравнение, это сравнение по шаблону ( =~ )
В твоем варианте лишний гемор с регекспом )))) И еще хорошо было бы модификаторы io поставить в шаблоне :)) ЗЫЖ А то сталкивался с любителями писать мыла а-ля (@Rambler.Ru @RAMBLER.RU итд) )))) ЗЗЫЖ В примере C!klodoL будет еще ловить мыла а-ля *rambler*@somehost.com.... лучше будет в шаблоне юзать что-нибудь типа \@rambler.ru Ну это так, если уже по коду пошли ) |
Смотрим примеры которые дал ТС :D
Теперь в парсер который написал C!klodoL положим мыло ramblerko@gmail.com biophreak прикольно отредактировал не успел я ответ написать . Еще раз повторяю ориентируемся на примеры ТС |
Добавляем ровно 4 символа в пример C!klodoL =)) :
open(FILE, '<incom.txt'); while(<FILE>) { print $_ if $_ =~ /\@rambler/io; } Вуаля :)))) Ну примеры, он видимо тут и придумывал, а ктож знает какая там у него база мыл.... :))))) |
Цитата:
если уж совсем точно то; open(FILE, '<incom.txt'); while(<FILE>) { print $_ if $_ =~ /\@rambler\.ru/i; } |
ну да :) а еще .info .org .mobi и так далее )))))
|
А теперь делаем оптимизацию и убираем 9 лишних символов )))
open(FILE, '<incom.txt'); while(<FILE>) { print if /\@rambler\.ru/i; } |
Ну и если совсем упростить и минимизировать :)))))
open(F, 'incom.txt'); while(<F>){ print if /\@rambler.ru/i } :D |
Я специально не стал стал изменять имена дескриптора и файлов, перевод строк и тд, но раз уж на то пошло:
open(F,'i');while(<F>){print if /\@rambler.ru/i} |
Добавлю отдельный твик :)))
while(<>){ print if /\@rambler.ru/i } Юзать как file.pl file_with_mails.txt Жду ответа :)))) )))) |
PHP код:
|
"оптимизация на размер исходника" - мне фраза кажется глупой ;)
|
Код:
$ cat incom.txt |
Вариант 1
Могу только пробелы убрать ) while(<>){print if /\@rambler.ru/i} И запускать как f.pl i )) Вариант 2 аka жесткий твик =) while(<>){print if /\@r(.+)r.ru/i} Выгода - 1 символ )) Лично я не знаю подобного почтовика кроме рамблера nerezus, да мы просто балуемся (или если хочешь - меряемся письками :) |
PHP код:
как мне написали explode() не рулит, лучше strpos... это так, просто скрипт брал из этого: http://forum.antichat.ru/thread54946.html strpos рулит не всегда кстати |
Цитата:
кста, вот мой вариант кода ; ).. Код:
/@rambler\.ru/i&&print for<> |
Код:
perl -ne "/r.r/&&print" mails.txtЗЫ дижимортал опередил на несколько секунд)))) гг.. не видел + без грязного хака ))) Код:
perl -ne "/rambler.ru/&&print" mails.txt |
Цитата:
Цитата:
Цитата:
Цитата:
|
тогда оптимально будет что-то вроде
Код:
perl -ne "/\@r(.+?)r.r/i&&print" mails.txt |
Вариант есть, точнее исправление:
perl -ne "/\@r(.+)r.r/i&&print" mails.txt Непонятно, зачем ты туда ? добавил. (.+) значит один или несколько символов, больше ниче не надо. blackybr: привычка :) думаю автор получил что хотел, да и мы померились размерами :) клозед |
Извиняюсь за поднятую тему.
Но если к примеру есть текстовый документ с мэйлами, такого формата: Цитата:
abbi@yahoo.com::abbie Если есть возможность помочь, буду благодарен, т.к. в php не силён. |
PHP код:
|
Isis -огромное спасибо, что откликнулся. Но при попытке пропарсить на локалхосте, выдаёт кучу ошибок
Цитата:
В чём может быть проблемма? 0_o |
PHP код:
|
Работает ! :)
только выдирает по одной записи, начиная с последней :(. Если я из базы удаляю последнюю запись, то он записывает в файл предидущую. Но только одну. :( |
PHP код:
|
Ай да красавчег! Работает! Спасибо огромнейшее! Спасибо всем, кто помогал.
|
как-то php выглядит с одной стороны роднее, а с другой такой гигантизм прям по сравнению я перловкой)
кстати, а че ежели сначала замутить strtolower($mails); а потом тупо выдергивать строки, в которых есть '@rambler.ru' по-моему будет проще регулярок. хотя хз |
PHP код:
|
Полная версия (с выводом в новый файл):
PHP код:
|
Приветствую, прошу прощения, что апнул тему...
В общем есть база вида: lsben@yahoo.com::goodmorning что следует изменить в вышеприведённом коде, для отсеивания имен и составления списка чистых мыл, вида: lsben@yahoo.com Или выложите плз рабочий кусок кода, т.к. в php не силён :( Заранее благодарен, с ув. ThreeD |
Цитата:
while(<IN>) { print $1."@".$2,"\n" if /(\w+)\@(.*?)::(\w+)/; } |
Работает :) Забыл файл с мылами переименовать :)
Спасибо +! |
Цитата:
это Perl,если что У меня все работает,проверял |
| Время: 06:07 |