[Linux-programlama] Re: Regex sorusu

---------

[Linux-programlama] Re: Regex sorusu

From: Azer Koculu <azer_at_kodfabrik.com>
Date: Sat, 8 Nov 2008 21:18:18 +0200
Message-ID: <2520c4260811081118m66dd4080x5360f7e097d0918e@mail.gmail.com>

Cok tesekkurler, non-greedy isareti Javascript'te de soru isaretiymis.

Bu durumda desenin soundaki parantez, fonksiyona verilen string'teki
parantezle eslesmez mi?

On Fri, Nov 7, 2008 at 5:28 PM, Recai Oktaş <roktas_at_debian.org> wrote:
> Merhaba,
>
> * Azer Koculu [2008-11-07 15:48:46+0200]
>> Bir dosyadaki tum console.log(); komutlarini regex ile silmek
>> istiyorum.Bunun icin su deseni yazdim; console.log[^\n]+;
>>
>> Gordugunuz gibi, multiline console komutlarini temizlemiyor, yani;
>>
>> console.log(
>> "fff"
>> );
>>
>> Eger multiline kodlari da yakalamak istersem komutun kapandigi yer
>> karisabiliyor, ornegin soyle bir kod olsun:
>>
>> console.log(
>> 123
>> )
>>
>> print("hello world");
>>
>> Bu kodda console.log'un sonundaki parantezi yakalayan desenim,
>> print'in sonundaki parantezi karistirdigi icin tum kod siliniyor.Buna
>> benzer bir durum kod renklendirirken de karsima cikmisti cozememistim,
>> yardimci olursaniz sevinirim.
>
> Genişletilmiş düzenli ifade motorları eşleştirmede (istisnalar bir yana)
> "greedy" ("açgözlü") davranır, yani olası en uzun eşleştirmeyi yapar ki
> sizin verdiğiniz örnekte eşleştirmenin print'e ait kapama parantezine kadar
> uzatılmasının nedeni bu. Başvurmanız gereken anahtar sözcük: "non-greedy".
>
> Bu uygulamayı hangi dilde yazdığınızı belirtmemişsiniz. Kullandığınız
> dilde PCRE (Perl Uyumlu Düzenli İfade) desteği olduğunu varsayarak
> aşağıdaki Perl örneğinde geçen düzenli ifadeden yararlanabilirsiniz:
>
> $ cat /tmp/t.pl
> # örnek dizgi
> $str = <<'EOF';
> console.log(
> 123
> );
> print("hello world");
> console.log("fff");
> EOF
>
> $str =~ s/console[.]log\s*[(].*?[)][;]//smg; # 'smg'ye dikkat!
> # ^ '?' → non-greedy niteleyici
> print $str;
> $ perl /tmp/t.pl
>
> print("hello world");
>
> --
> roktas
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama_at_liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>

-- 
Azer Koçulu
http://azer.kodfabrik.com
_______________________________________________
Linux-programlama mailing list
Linux-programlama_at_liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama
Received on Sat 08 Nov 2008 - 20:30:05 EET

---------

Bu arsiv hypermail 2.2.0 tarafindan uretilmistir.