perlなどでは正規表現のオプションで、"g"というグローバルマッチ(global match)のオプションがある。rubyにはそのようなオプションがないが、正規表現とString#scanを使うことで同様のコードを実現できる。
2011/05/19修正: gsubを使うと書いたが、rochefort様の指摘通りString#scanの方がperlのwhileを使ったグローバルマッチに近い(gsubだとマッチした部分が消える)ので修正。
文字列.scan(/正規表現/) do |マッチした文字列| 処理… end下記はirbでの実行例。
irb> 'This is the pen.'.scan(/th\w+/i){|m|p m}
"This"
"the"
=> "This is the pen."
2011/05/19修正: gsubを使うと書いたが、rochefort様の指摘通りString#scanの方がperlのwhileを使ったグローバルマッチに近い(gsubだとマッチした部分が消える)ので修正。