トップページに戻る    次の正規表現パズルへ    前の正規表現パズルへ

7-1 Rubyの正規表現の使用例

正規表現パズル

Rubyの、HelloWorldから正規表現を使用するまでの
Rubyのサンプルプログラムです。

初めてのRubyでRubyを学びました。


#HelloWorld (Ruby環境を覚える)

puts 'HelloWorld'
puts 'HelloRuby'


#1から100までの和を求める (forを覚える)

sum = 0
for i in (1..100)
    sum += i
end
puts "sum from 1 to 100 = #{sum}"


#1から100までの和を求める (whileを覚える)

sum = 0 ; i = 1
while i <= 100
    sum += i
    i += 1
end
puts "sum from 1 to 100 = #{sum}"


#FizzBuzz問題 (ifを覚える)

for i in (1..100)
    if (i%3 == 0) and (i%5 == 0) then
        puts 'FizzBuzz'
    elsif (i%3 == 0) then
        puts 'Fizz'
    elsif (i%5 == 0) then
        puts 'Buzz'
    else
        puts i
    end
end


#1から100までを配列にセット (配列の扱いを覚える)

hairetu = Array.new
for i in (1..100)
    hairetu.push(i)
end
puts hairetu


#正規表現で^[ac][1-8]な文字列を検索 (正規表現の扱い方を覚える)

ConstRegex = Regexp.new('^[ac][1-8]')
hairetu = Array.new
hairetu.push('a15')
hairetu.push('a81')
hairetu.push('a92')
hairetu.push('b13')
hairetu.push('b84')
hairetu.push('b96')
hairetu.push('c17')
hairetu.push('c88')
hairetu.push('c99')

puts "Pattern #{ConstRegex.source}"
for i in (0..hairetu.length-1)
    willOut = "Line#{i+1} #{hairetu[i]} "
    work = ConstRegex.match(hairetu[i]).to_a[0]
    if work then
        willOut += 'matchs ' + work
    else
        willOut += 'no match'
    end
    puts willOut
end

#実行結果
Pattern ^[ac][1-8]
Line1 a15 matchs a1
Line2 a81 matchs a8
Line3 a92 no match
Line4 b13 no match
Line5 b84 no match
Line6 b96 no match
Line7 c17 matchs c1
Line8 c88 matchs c8
Line9 c99 no match