Article View: pl.comp.lang.perl
Article #1210Re: /\+(?:\(.*?\)|.*?)(?:$|(?=\+))/g
From: Krzysztof Koczyjan
Date: Tue, 14 Apr 1998 22:18
Date: Tue, 14 Apr 1998 22:18
32 lines
1824 bytes
1824 bytes
Qrczak wrote:
>
> On Mon, 13 Apr 1998, Krzysztof Koczyjan wrote:
>
> Z tym że pozostaje ta sama niepewność, czy on nie dopasuje początku
> czegoś w rodzaju (x+y) akurat do .*? zamiast do \(.*?\). Nigdy nie
> słyszałem o regule, że jeśli coś pasuje do kilku części oddzielonych
Perl uzywa tzw "leniwego" obliczania wyrazen regularnych - zatrzymuje
sie na pierwszym pasujacym wzorcu - i jak doswidczenia pokazuja sprawdza
wzorce od lewej strony.
"Pelne" obliczanie zatrzymuje sie na najdluzszym z pasujacych, niestety
wymaga to przejrzenia wszystkich kombinacji. Wymaga to niestety wiecej
czasu, a perl ma dzialac szybko :-).
W przypadku ktory opisujesz nie akurat problemu (.*)\+ jest dluzsze niz
(.*\+ , tak ze zostanie wybrane wlasciwe, ale jesli chcesz miec pewnosc
to mozna uzyc czegos takiego:
while(1){
if( /\G(\(.*?\))(\+|$)/gc ){
fun($1);
}
elsif( /\G(.*?)(\+|$)/gc ){
fun($1);
}
else{
last;
}
}
Pozdrowienia
KK
Technical Details
Message-ID:
<6h0nc4$qj9@bgtnsc03.worldnet.att.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news-peer.gip.net!news.gsl.net!gip.net!news-peer.sprintlink.net!news.sprintlink.net!Sprint!worldnet.att.net!newsadmReferences:
<Pine.LNX.3.96.980410093444.16675A-100000@qrnik.knm.org.pl> <6gukal$gn4@bgtnsc03.worldnet.att.net> <Pine.LNX.3.96.980414112214.18502A-100000@qrnik.knm.org.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news-peer.gip.net!news.gsl.net!gip.net!news-peer.sprintlink.net!news.sprintlink.net!Sprint!worldnet.att.net!newsadm From: Krzysztof Koczyjan <krzysztofk@rocketmail.com> Newsgroups: pl.comp.lang.perl Subject: Re: /\+(?:\(.*?\)|.*?)(?:$|(?=\+))/g Date: Tue, 14 Apr 1998 17:18:39 -0500 Organization: AT&T WorldNet Services Lines: 32 Message-ID: <6h0nc4$qj9@bgtnsc03.worldnet.att.net> References: <Pine.LNX.3.96.980410093444.16675A-100000@qrnik.knm.org.pl> <6gukal$gn4@bgtnsc03.worldnet.att.net> <Pine.LNX.3.96.980414112214.18502A-100000@qrnik.knm.org.pl> Reply-To: krzysztofk@rocketmail.com NNTP-Posting-Host: 12.66.1.169 Mime-Version: 1.0 X-Mailer: Mozilla 3.0Gold (Win95; U) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit