🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: regex w wielu liniach, mam problem

#39781
From: Grzegorz Szyszlo
Date: Tue, 19 Oct 2004 08:51
128 lines
6922 bytes
Maciej Misiak wrote:

skomentuje istnienie linii

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

i tak sie zastanawiam jak zrobic regexpa ktory by mi to pominal.

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

jak juz to \s+ , bo wystepuje conajmniej jedna.

> A poza tym wrzuc przykladowego loga na newsy, bo chce sobie wyprobowac takie 
> cos:
> 
> $smieci='(?:.*\n)*?\s*?';
> $dwukropek='\s*?:\s*?';
> $line=~/Job\s*(.+)\n
>         $smieci
>         (?:Job\ Type             $dwukropek (.+)\n)?
>         $smieci                  
>         (?:Backup\ mode          $dwukropek (.+)\n)?
>         $smieci
>         (?:Job Start\ Time       $dwukropek (.+)\n)?
>         $smieci
>         (?:$dwukropek Media      $dwukropek (.+)\n)?
>         $smieci
>         (?:Backup\ Last\ Objects $dwukropek (.+)\n)?
>         $smieci
>         (?:Job\ End\ Time        $dwukropek (.+)\n)?
>         $smieci
>         (?:Completed\ Size       $dwukropek (.+)\n)?
>         $smieci
>         (?:Failed\ Objects       $dwukropek (.+)\n)?
>         $smieci
>         (?:(Job\ Completed\ Succ?essfully).*\n)?
>         $smieci
>         (?:Media $dwukropek Home\\.+? - .+? \\ ([^\n\\]+))?
>         /x;

a testuj :) chociaz watpie by ci to zrealizowal bez /m .
zreszta sam chetnie sprawdze :)
Btw. zastanawiajace moze byc wyrazonko Succ?essfully . po prostu
we wczesniejszych wersjach a nawet fixach programu, widnial
napis Sucessfully. literowka. to samo (w twoim wyrazeniu jest zle)
Backup\ Last\ Objects?  (zapomniales pytajnika), tez byla pominieta
literka 's' na koncu.

------------przykladowy LOG z tapeware--------------
===============================================================================
Job Testowe zadanie
===============================================================================

Summary
-------------------------------------------------------------------------------
   Job Type                 : Backup Job
   Number of Passes         : 5
   Logging Mode             : Failed Objects Only
   Backup mode              : Full
   Change mode              : Force to append
   Write Mode               : Overwrite all Media
   Auto Format Mode         : Do Not Auto Format Media
   Verify Mode              : Quick Read Verification

   Job Start Time           : 14-Jul-2002 01:00 Pm
     Selecting Objects      :     Start  14-Jul-2002 01:00:21 Pm
     Selecting Objects      :       End  14-Jul-2002 01:01:00 Pm
     Backup 1st Objects     :     Start  14-Jul-2002 01:01:00 Pm
                            :
                            : Disaster Recovery information has been saved for
                            :      Host           : SERWERTEST
                            :      Device         : Dev-1.0.5.0: Benchmark DLT1
                            :      Media          : TASMA15
                            :
     Backup 1st Objects     :       End  14-Jul-2002 01:02:14 Pm
     Backup Pass 1          :     Start  14-Jul-2002 01:02:14 Pm
     Backup Pass 1          :       End  14-Jul-2002 04:35:53 Pm
     Backup Pass 2          :     Start  14-Jul-2002 04:36:09 Pm
     Backup Pass 2          :       End  14-Jul-2002 04:36:30 Pm
     Backup Pass 3          :     Start  14-Jul-2002 04:36:46 Pm
     Backup Pass 3          :       End  14-Jul-2002 04:37:06 Pm
     Backup Pass 4          :     Start  14-Jul-2002 04:37:23 Pm
     Backup Pass 4          :       End  14-Jul-2002 04:37:42 Pm
     Backup Pass 5          :     Start  14-Jul-2002 04:37:58 Pm
     Backup Pass 5          :       End  14-Jul-2002 04:38:18 Pm
     Backup Last Object     :     Start  14-Jul-2002 04:38:18 Pm
                            :
                            : The object MojSerwer Storage Server Database has been backed up
                            :     Device         : Dev-1.0.5.0: Benchmark DLT1
                            :     Media          : TASMA15
                            :
     Backup Last Object     :       End  14-Jul-2002 04:38:42 Pm
     Build Object List      :     Start  14-Jul-2002 04:39:18 Pm
     Build Object List      :       End  14-Jul-2002 04:39:19 Pm
     AutoVer Pass 1         :     Start  14-Jul-2002 04:39:19 Pm
     AutoVer Pass 1         :       End  14-Jul-2002 08:07:10 Pm
   Job End Time             : 14-Jul-2002 08:08 Pm

   Effective Throughput     : 3765 Kbytes/Second
                            : 220 Mbytes/Minute

   Selected Objects         : 150339
   Selected Size            : 96626588 Kbytes
   Completed Objects        : 150290
   Completed Size           : 96626454 Kbytes
   Failed Objects           : 49
   Failed Size              : 133 Kbytes

   Job Completed Sucessfully
     Check Log for any Failed Objects

Details
-------------------------------------------------------------------------------
I dalej nic nie znaczace rzeczy.
Technical Details
Message-ID: <cl2kjm$4b6$1@news.lublin.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!news.lublin.pl!not-for-mail
References: <1d72.00000a9b.4173d684@newsgate.onet.pl> <1d72.00000ac9.4173e369@newsgate.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!news.lublin.pl!not-for-mail
From: Grzegorz Szyszlo <znik@wbc.lublin.pl>
Newsgroups: pl.comp.lang.perl
Subject: Re: regex w wielu liniach, mam problem
Date: Tue, 19 Oct 2004 10:51:19 +0200
Organization: lubman
Lines: 129
Message-ID: <cl2kjm$4b6$1@news.lublin.pl>
References: <1d72.00000a9b.4173d684@newsgate.onet.pl> <1d72.00000ac9.4173e369@newsgate.onet.pl>
NNTP-Posting-Host: user.wbc.lublin.pl
Mime-Version: 1.0
X-Trace: news.lublin.pl 1098175926 4454 212.182.104.10 (19 Oct 2004 08:52:06 GMT)
X-Complaints-To: abuse@news.lublin.pl
NNTP-Posting-Date: Tue, 19 Oct 2004 08:52:06 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030721 Debian/1.4-1.nobse.2
X-Accept-Language: pl, en-us
In-Reply-To: <1d72.00000ac9.4173e369@newsgate.onet.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit