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 < dan > 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
signature.asc
Description: Digital signature