🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #39779

Re: regex w wielu liniach, mam problem

#39779
From: Maciej Misiak
Date: Mon, 18 Oct 2004 14:43
62 lines
4086 bytes
> Grzegorz Szyszlo wrote:
> 
>    $line=~/      ^Job \s                              ([^\n]+) $ \n
>          .*?     ^\s\s Job\ Type \s+             : \s ([^\n]+) $ \n
>          .*?     ^\s\s Backup\ mode \s+          : \s ([^\n]+) $ \n
>          .*?     ^\s\s Job\ Start\ Time \s+      : \s ([^\n]+) $ \n
>          .*?     ^\s+ : \s+ Media \s+            : \s ([^\n]+) $ \n
>          .*?     ^\s+ Backup\ Last\ Objects? \s+ : \s+ End \s+ ([^\n]+) $ \n
>          .*?     ^\s+ Job\ End\ Time \s+         : \s ([^\n]+) $ \n
>          .*?     ^\s\s Completed\ Size \s+       : \s ([\d]+) [^\n]* $ \n
>          .*?     ^\s\s Failed\ Objects \s+       : \s ([^\n]+) $ \n
>          .*?     ^\s\s (Job\ Completed\ Succ?essfully) [^\n]* $ \n
>          /xsm;

Nie jestem pewien czy w ogole '$ \n' na koncu kazdej linii jest potrzebne. Na 
poczatku kolejnej linii jest .*? ktore z koncem linii sobie bezproblemowo 
poradzi. Natomiast dana do pobrania do zmiennych $1-$10 i tak jest czytana az 
do napotkania konca linii. Wiec proponuje tak:

$line=~/      ^Job \s                              ([^\n]+)
        .*?     ^\s\s Job\ Type \s+             : \s ([^\n]+)
        .*?     ^\s\s Backup\ mode \s+          : \s ([^\n]+)
        .*?     ^\s\s Job\ Start\ Time \s+      : \s ([^\n]+)
        .*?     ^\s+ : \s+ Media \s+            : \s ([^\n]+)
        .*?     ^\s+ Backup\ Last\ Objects? \s+ : \s+ End \s+ ([^\n]+)
        .*?     ^\s+ Job\ End\ Time \s+         : \s ([^\n]+)
        .*?     ^\s\s Completed\ Size \s+       : \s ([\d]+) [^\n]*
        .*?     ^\s\s Failed\ Objects \s+       : \s ([^\n]+)
        .*?     ^\s\s (Job\ Completed\ Succ?essfully) [^\n]*
        /xsm;

Poza tym ja bym przemyslal czy na poczatku kazdej linii oraz miedzy dwukropkiem 
a innymi napisami nie wstawic \s* Zaoszczedzi to bolu glowy, bo trzeba bedzie 
sie zastanawiac czy np. po Media sa trzy spacje a przed Backup mode dwie czy na 
odwrot.

> Btw. niech nikogo nie dziwia konstrukcje typu:  "Job\ Type" .
> Chodzi o to, ze przy opcji /x , spacja jest traktowana jakby w zasadzie
> jej nie bylo, slashowanie pozwala przywrocic jej pierwotne znaczenie.
> nie wyczytalem tego w zadnym docu, posluzylem sie ta konstrukcja
> "na czuja" i poszlo. czyzby cos nieudokumentowanego? :)))

Jesli chodzi o dziwny sposob lapania spacji z backslashem '\ ' to to jest 
identyczna technika jak w przypadku lapania jakiegokolwiek innego specjalnego 
znaku, np. \$ albo \. Z powodu przelacznika /x nie mozna normalnie dopasowac 
spacji, wiec '\ ' jest smiesznie wygladajacym, ale konsekwentnym sposobem 
zapisu.

> aha. konstrukcja typu .*? z opcja /s  na kolana co prawda
> nie powala, ale w moim przypadku jest to wystarczajaco wydajne,
> i osiagam zamierzony rezultat, czyli pominiecie dowolnej partii
> logu, bez ogladania sie na konce linii. w razie czego
> zawsze mozna zastosowac [^\n]* jesli konce linii jednak musza
> miec znaczenie :)

Wiec wlasnie, wywal znaki konca linii z konca linii :)

pzdr
Grizzley

-- 
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Technical Details
Message-ID: <1d72.00000a9b.4173d684@newsgate.onet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.pl
References: <cl056v$uj6$1@news.lublin.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.pl
From: "Maciej Misiak" <grizzleyWYTNIJTO@op.pl>
Newsgroups: pl.comp.lang.perl
Subject: Re: regex w wielu liniach, mam problem
Date: 18 Oct 2004 16:43:17 +0200
Organization: Onet.pl SA
Lines: 62
Message-ID: <1d72.00000a9b.4173d684@newsgate.onet.pl>
References: <cl056v$uj6$1@news.lublin.pl>
NNTP-Posting-Host: newsgate.onet.pl
Mime-Version: 1.0
X-Trace: newsgate.test.onet.pl 1098110597 11168 213.180.130.18 (18 Oct 2004 14:43:17 GMT)
X-Complaints-To: abuse@onet.pl
NNTP-Posting-Date: 18 Oct 2004 14:43:17 GMT
X-Mailer: http://niusy.onet.pl
X-Forwarded-For: 217.153.136.40, 157.25.5.66, 192.168.243.49
X-User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit