🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

pierwsze podejscie nietrafione: regex w wielu liniach, mam problem

#39782
From: Grzegorz Szyszlo
Date: Tue, 19 Oct 2004 09:12
134 lines
6106 bytes
> Maciej Misiak wrote:

No wiec wykonalem test:

plik test.pl:
#!/usr/bin/perl -w
use strict;

my $line=<<KONIECPLIKU;
===============================================================================
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.
KONIECPLIKU

my $smieci='(?:.*\n)*?\s*?';
my $dwukropek='\s*?:\s*?';

######### TO JEST TO KONTROWERSYJNE WYRAZENIE ################
$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)?  #dorzucilem brakujacy znak '?'
         $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\\]+))?
         /xm;

my @tab=(0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10);  #bo lubie liczyc od 1 :)
for(my $a=1; $a<=10; $a++) {
   $tab[$a]='UNDEF' unless defined $tab[$a];
   print "\$$a = $tab[$a]\n";
}
--------------EOF----------------

Wyniki:
$1 = Testowe zadanie
$2 = UNDEF
$3 = UNDEF
$4 = UNDEF
$5 = UNDEF
$6 = UNDEF
$7 = UNDEF
$8 = UNDEF
$9 = UNDEF
$10 = UNDEF


czyli kicha :( bo tutaj (?:.....)? nie jest do niczego zmuszane,
a jako operator niezachlanny po prostu niczego nie dopasowuje :(
jak nic z tego nie wyjdzie, to bede musial rozbic regexa na kawalki
i dopasowywac kazda linijke osobno, a potem skladac do kupy.
chyba ze ktos ma pomysly :) bo ten konkretny problem przy uzyciu
samego regexa mnie chyba przerosl.

znik.


ps: mam nadzieje ze modemowcow szlag nie trafi.
Technical Details
Message-ID: <cl2lrg$5lg$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> <cl2kjm$4b6$1@news.lublin.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: pierwsze podejscie nietrafione: regex w wielu liniach, mam problem
Date: Tue, 19 Oct 2004 11:12:33 +0200
Organization: lubman
Lines: 136
Message-ID: <cl2lrg$5lg$1@news.lublin.pl>
References: <1d72.00000a9b.4173d684@newsgate.onet.pl> <1d72.00000ac9.4173e369@newsgate.onet.pl> <cl2kjm$4b6$1@news.lublin.pl>
NNTP-Posting-Host: user.wbc.lublin.pl
Mime-Version: 1.0
X-Trace: news.lublin.pl 1098177200 5808 212.182.104.10 (19 Oct 2004 09:13:20 GMT)
X-Complaints-To: abuse@news.lublin.pl
NNTP-Posting-Date: Tue, 19 Oct 2004 09:13:20 +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: <cl2kjm$4b6$1@news.lublin.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit