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ş <[EMAIL PROTECTED]> 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
> [email protected]
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>



-- 
Azer Koçulu
http://azer.kodfabrik.com
_______________________________________________
Linux-programlama mailing list
[email protected]
http://liste.linux.org.tr/mailman/listinfo/linux-programlama

Cevap