🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Ostatnie podejscie trafione :) bylo: regex w wielu liniach, mam problem

#39786
From: Grzegorz Szyszlo
Date: Wed, 20 Oct 2004 11:48
48 lines
3289 bytes
Dodatkowa autopoprawka. stary regexp ktory mi pierwotnie nie dzialal byl
oparty na formie
.*?  (?: ........ (...) ...)?    /x
przerobilem to do formy
/  (?: .*? ........ (...) ...)?    /x

i co? i dziala :)
kompletne wyrazenie wyglada tu tak:

   $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+ 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                )?
                 (?:.*?  ^\s\sMedia \s+  : \s Home\\[^\n]+? - [^\n]+? \\ ([^\n\\]+)  \n  )?
         /xsm;

czyli niczego nie skracalem, ale jak widac
zachowuje dopasowanie do calego wiersza od poczatku do samego konca.

Drobna, ale to bardzo drobna uwaga. w przykladowym logu zabraklo na koncu linii:

...rozne smieci
...rozne smieci
Media                    : Home\Admin Folder\zadanie - Rotation Media\Weekly Rotation Media\Week Set 1\TASMA15
...rozne smieci
...rozne smieci

tutaj problemem jest wszystko pomiedzy pierwszym ': Home\' a ostatnim '\' , co nalezy
pominac. co gorsza, te elementy wystepuja, lub nie, a co gorsza w pomijanym
fragmencie moga wystapic naki '\' .
ale wyrazonko jakos sobie z tym radzi :)

btw jednak operator ? jest zachlanny, ?? jest niezachlany. ale otaczanie nawiasami
spowodowalo, ze calosc po prostu glupiala dopasowujac sie do pustych ciagow znakow,
w efekcie czego zmienne $ uzyskiwaly UNDEF.

pewine zostawie sobie obydwa warianty wyrazen, i w praniu zobacze ktore bedzie bardziej
glupotoodporne.

nie spodziewalem sie, ze przestawienie .*? w srodek nawiasow az tyle zmieni.
i na tym chyba zakoncze.

znik ktory jak zwykle nakombinowal.
Technical Details
Message-ID: <cl5jbt$muk$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: <30b7.00000127.4174ef5d@newsgate.onet.pl> <30b7.00000169.4174fa63@newsgate.onet.pl> <cl5h9t$l3j$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: Ostatnie podejscie trafione :) bylo: regex w wielu liniach,      mam   problem
Date: Wed, 20 Oct 2004 13:48:30 +0200
Organization: lubman
Lines: 49
Message-ID: <cl5jbt$muk$1@news.lublin.pl>
References: <30b7.00000127.4174ef5d@newsgate.onet.pl> <30b7.00000169.4174fa63@newsgate.onet.pl> <cl5h9t$l3j$1@news.lublin.pl>
NNTP-Posting-Host: user.wbc.lublin.pl
Mime-Version: 1.0
X-Trace: news.lublin.pl 1098272958 23508 212.182.104.10 (20 Oct 2004 11:49:18 GMT)
X-Complaints-To: abuse@news.lublin.pl
NNTP-Posting-Date: Wed, 20 Oct 2004 11:49:18 +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: <cl5h9t$l3j$1@news.lublin.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit