On Tue, Feb 28, 2006 at 03:55:14PM +0900, rofiq wrote:
> On 2/28/06, Ronny Haryanto <[EMAIL PROTECTED]> wrote:
> > On Tue, Feb 28, 2006 at 12:22:35PM +0900, rofiq wrote:
> > > str.gsub(/<[^>]*>/) do |tag|
> > >   tag.gsub(/test/, 'coba')
> > > end
> >
> > Regexnya di atas akan match ">" yang berada di dalam tanda double
> > quotes juga, seperti ini:
> >
> >     <img src="gambar.jpg" alt=">" width="100" title="test" />
> >     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >     (cuma segini matchnya)
> >
> > dan "test" di atas masih akan kereplace. Tapi kayaknya sih bare "<"
> > dan ">" nggak legal, harusnya jadi &lt; dan &gt; ya? (lagi males nyari
> > di X?HTML spec).
> 
> sebenernya sih aku ngikut contoh sblmnya aja :-)
> tapi emang style kaya' gini sering kepake juga, kalau diganti regexnya
> jadi "<.*>" (pake dot) pasti matchnya bukan ama karakter greater-than
> (g-t) terdekat, tapi ama g-t yg terakhir, ada yg bisa jelasin?

Iya, karena itu greedy match (sebanyak mungkin match). Kalo yg
non-greedy pake ? lagi di belakangnya, jadi *?, +?, ??, dst. Minimal
di perl begitu (man perlre, cari "greedy"). /<.*?>/ akan ngematch
">" yg pertama.

[EMAIL PROTECTED] ~ $ echo '<img alt=">" width="100">' | perl -pe 's/<.*?>/FOO/'
FOO" width="100">
[EMAIL PROTECTED] ~ $ echo '<img alt=">" width="100">' | perl -pe 's/<.*>/FOO/'
FOO

Tapi masalahnya di atas lebih kompleks, bukan sekedar masalah
greediness aja, tapi lebih ke grammar. Dia gak boleh match ">" yang di
dalam quotes.

Ronny

Attachment: signature.asc
Description: Digital signature

Kirim email ke