Article View: pl.comp.lang.perl
Article #39782pierwsze podejscie nietrafione: regex w wielu liniach, mam problem
From: Grzegorz Szyszlo
Date: Tue, 19 Oct 2004 09:12
Date: Tue, 19 Oct 2004 09:12
134 lines
6106 bytes
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-mailReferences:
<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