scanメソッド

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

scanメソッドは、gsubメソッドのように、文字列中のすべてのマッチする部分を検索し、取り出します。
gsubメソッドとの違いは、検索してマッチした部分を取り出すだけで、置換は行わないという点です。
マッチした部分に対して、何らかの処理を行う場合に、scanメソッドを使うと便利です。

スポンサーリンク

str = "hello world !"
p str.scan(/.o/)
str.scan(/[^\s]+/){|m|
    puts m
}
 
"aaabbbbbcccabcddddddddddeeffff".scan(/(.)(\1{2,})/){|a, b|
    puts "#{a}#{b} :#{a} - #{b}"
    puts "#{$&} :#{$1} - #{$2}"
}

scanメソッドは、マッチした部分を配列として返します。
また、scanメソッドは、ブロックを取ることができるので、マッチした部分に繰り返し処理を行うことができます。
さらに、正規表現中で、「()」(括弧)で括った表現は、ブロックに引数として渡せます。(上記の場合、|a, b|)
ブロック内の以下2行の処理は、同じ処理となります。

puts "#{a}#{b} :#{a} - #{b}"
puts "#{$&} :#{$1} - #{$2}"

実行結果です。

["lo", "wo"]
hello
world
!
aaa :a - aa
aaa :a - aa
bbbbb :b - bbbb
bbbbb :b - bbbb
ccc :c - cc
ccc :c - cc
dddddddddd :d - ddddddddd
dddddddddd :d - ddddddddd
ffff :f - fff
ffff :f - fff
スポンサーリンク
 
スポンサーリンク