中野智文

中野智文(VOYAGE GROUP)のコンピュータなどのメモ

rubyでグローバルマッチをするときはString#scanを使う。(修正)

2011-04-15 16:10:21 | ruby
perlなどでは正規表現のオプションで、"g"というグローバルマッチ(global match)のオプションがある。rubyにはそのようなオプションがないが、正規表現とString#scanを使うことで同様のコードを実現できる。
文字列.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だとマッチした部分が消える)ので修正。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。