--- Arie Kusuma Atmaja <[EMAIL PROTECTED]> wrote:

> ide bagus, fyi kalau saya pribadi lebih suka kalau ketika seorang pemula
> sedang 
> mempelajari hal hal baru biasanya langsung dipraktekkan dengan begitu banyak
> rupa 
> macam catatan maupun coretan-coretan sebagai pendukung proses belajar. nah
> jika itu 
> semua bisa dishare dengan cara-cara apapun juga seperti kalau ditulis di
> komputer 
> berarti bisa dishare di blog masing2x, kalau difoto karena coret-coretan ada

atas petunjuk bapak presiden, saya coba share kepekan saya mengenai global
match. di-share di sini aja berhubung sama seperti roy suryo, saya ngga punya
blog :-)

regex di perl support global match modifier atau /g. ruby regex nampaknya tidak
support ini. "so what the heck is /g ??" you ask.
ok some background (dari man perlretut):

$x = "cat dog house"; # 3 words
$x =~ /^\s*(\w+)\s+(\w+)\s+(\w+)\s*$/; # captures cat, dog, house in $1. $2, $3

tapi bagaimana kalau jumlah words di dalam $x tidak fixed 3?
di sinilah gunanya /g:

while ($x =~ /(\w+)/g) {
  print "Word is $1\n";
}

kita coba dng ruby:
irb(main):001:0> "foo bar baz" =~ /(\w+)/g
SyntaxError: compile error
(irb):1: unknown regexp option - g
        from (irb):1

blech.. doesn't look good..

tapi..: 

texts = ['foo bar baz quux', 'cat dog house']
re = /(\w+)/
texts.each do |txt|
  words = []
  re.global_match(txt) do |m|
    words.push(m[0])
  end
  p words
end

"eits! dari mana itu .global_match??" you ask again. sabar:

class Regexp
  def global_match(str, &proc)
    loop do
      res = str.sub(self) do |m|
        proc.call($~) # pass MatchData obj
        ''
      end
      break if res == str
      str = res
    end
  end
end

rgds,
Edwin.



      ________________________________________________________ 
Bergabunglah dengan orang-orang yang berwawasan, di di bidang Anda! Kunjungi 
Yahoo! Answers saat ini juga di http://id.answers.yahoo.com/

Kirim email ke