Article View: pl.comp.lang.perl
Article #39777Re: regex w wielu liniach, mam problem
From: Grzegorz Szyszlo
Date: Mon, 18 Oct 2004 12:39
Date: Mon, 18 Oct 2004 12:39
58 lines
4052 bytes
4052 bytes
Szymon Sokół wrote:
> Grzegorz Szyszlo <znik@wbc.lublin.pl> wrote:
> : open PLIK,"log.programu.tapeware 6.30 lub 7.00" or return (); #blad otwarcia
> : sysread PLIK,$line,16384;
> Mam dziwne wrażenie, że tak naprawdę chcesz zrobić:
> undef $/; $line = <PLIK>;
teoretycznie tak, ale po drodze w algorytmie uzywam innych plikow
w trybie wierszowym. stad ta karkolomnosc.
> : $line=~s/\x0D\x0A/\x0A/gm; #skonwertuj \n do konwencji unix
> ...albo $line =~ tr/\x0D//d;
tysz prawda :)
> : btw. zastanawialem sie jak oznaczyc koniec linii, bo jak robilem $\n
> \n - po prostu \n; nie potrzebujesz tam żadnego $ ani ^.
w tym wyrazeniu potrzebuje, bo pomiedzy szukanymi liniami czesto
wystepuja linie z nieinteresujacymi mnie smieciami. jedyne co moge
zrobic, to zrezygnowac z $\n na rzecz samego \n .
ale ^ juz nie moge pominac w konstrukcji .*?^ .
( . pasuje tez do \n bo mam /s )
mam za to inny glupawy problem :)
otoz jak poumiesczalem wszystkie linie z regexa ktory naklepalem
w konstrukcjach (?: ........... )
bylo ok, ale (?: ........... )?
juz robil "dopasowania" do zerowych ciagow znakowych, w efekcie
wlasciwe dopasowanie z ( .... ) powodwalo ze w $1 ... $10
mialem undef zamiast szukanych wartosci.
poki co nie wiem jak to obejsc samym regexem. konstrukcja wyglada
dokladnie wiecej 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;
teraz wiem ze bylem naiwniakiem myslac ze w takiej formie to zadziala, bo tu dopasuje
sie tylko wtedy, kiedy bedzie musialo. tyle ze w tym wyrazeniu nic nie ma obowiazku
nigdzie sie dopasowac, wiec w rezultacie z wlasciwych nawiasow uzyskuje undefy.
cale wyrazenie raportuje sie jako dopasowane. No trudno. bede myslal dalej
jak obejsc problem :) w najgorszym przypadku, kazda z powyzszych linii
wyladuje w osobnym regexie, i dalej do tabelki zbiorczej z wartoscia POS na jakiej
wyrazenie sie wpasowalo. Po polach POS bede mogl ocenic czy kolejnosc
jest prawidlowa (wartosci rosnace), czy nieprawidlowa.
ale chcialem tego uniknac. w kazdym razie na tym w gruncie rzeczy glupawym przykladzie
lyknalem sporo doswiadczenia :)
znik.
Technical Details
Message-ID:
<cl0din$77f$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:
<ckvngq$hal$1@news.lublin.pl> <2n3c0c4fsk.fsf@ccfs1.fuw.edu.pl> <ckvv3q$ol3$1@news.lublin.pl> <cl056v$uj6$1@news.lublin.pl> <cl090t$nrf$1@galaxy.uci.agh.edu.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: Mon, 18 Oct 2004 14:39:04 +0200 Organization: lubman Lines: 59 Message-ID: <cl0din$77f$1@news.lublin.pl> References: <ckvngq$hal$1@news.lublin.pl> <2n3c0c4fsk.fsf@ccfs1.fuw.edu.pl> <ckvv3q$ol3$1@news.lublin.pl> <cl056v$uj6$1@news.lublin.pl> <cl090t$nrf$1@galaxy.uci.agh.edu.pl> NNTP-Posting-Host: user.wbc.lublin.pl Mime-Version: 1.0 X-Trace: news.lublin.pl 1098103191 7407 212.182.104.10 (18 Oct 2004 12:39:51 GMT) X-Complaints-To: abuse@news.lublin.pl NNTP-Posting-Date: Mon, 18 Oct 2004 12:39:51 +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: <cl090t$nrf$1@galaxy.uci.agh.edu.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit