yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY149> 正規表現について

\ Follow me!! /

●7/20(土)
●学習日数 149日
●学習時間(本日)2時間
●累計学習時間 722.5時間
●一日あたりの平均学習時間 4.88時間


正規表現の記号の役割

記号がマッチするかどうか
/hoge/
scanメソッドについて

scanメソッドは、引数で指定した正規表現のパターンとマッチする部分を文字列からすべて取り出し、配列にして返します。マッチする部分がなければ、空の配列を返します。
引数に文字列を指定したときは、一致する部分文字列をすべて配列に取り出します。

s = "of the people, by the people, for the people"
p s.scan(/\w+/)
p s.scan("people")

["of", "the", "people", "by", "the", "people", "for", "the", "people"]
["people", "people", "people"]

問題

任意の文字列に"code"が、どこかに現れるかを回数を返して数えて
その数を出力するメソッドを作りましょう。
ただし、'd'には任意の文字が使用可能です、
例えば"cope"と "cooe"はカウントされます。

ヒント:正規表現を使用してみましょう。

出力例:

count_coxe('aaacodebbb') → 1
count_coxe('codexxcode') → 2
count_coxe('cozexxcope') → 2

回答

def count_code(str)
  puts str.scan(/co.e/).length
end


count_code("cozexxcopez")