Article View: pl.comp.lang.perl
Article #39786Ostatnie podejscie trafione :) bylo: regex w wielu liniach, mam problem
From: Grzegorz Szyszlo
Date: Wed, 20 Oct 2004 11:48
Date: Wed, 20 Oct 2004 11:48
48 lines
3289 bytes
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-mailReferences:
<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