10-2-2 正規表現に一致する文字列を取り出したり文字列を置き換えよう

複数の単語から正規表現に一致する単語を取り出すプログラムを記述し保存する

以下のようなプログラムを記述し、ファイル名をregexp1.rbとして保存します。

words = %w(after all air and animal answer around)

p words.select { |word| /^a.*r$/ =~ word }

p words.select { |word| /^a.*l$/ =~ word }

p words.select { |word| /^a.*d$/ =~ word }

複数の単語から正規表現に一致する単語を取り出すプログラムを実行する

コマンドライン上で保存したプログラムをファイルを指定して実行します。

実行結果にaで始まりrで終わる単語、aで始まりlで終わる単語、aで始まりdで終わる単語が、それぞれ配列で表示されます。

$ ruby regexp1.rb
["after", "air", "answer"]
["all", "animal"]
["and", "around"]

複数の文章から正規表現に一致する単語を取り出すプログラムを記述し保存する

以下のようなプログラムを記述し、ファイル名をregexp2.rbとして保存します。

sentences = [
  'This is a pen1.',
  'This is a pineapple.',
  'This is a apple.',
  'This is a pen2.',
]

sentences.each do |sentence|
  p sentence.match(/This is a (\w+)\./)[1]
end

複数の文章から正規表現に一致する単語を取り出すプログラムを実行する

コマンドライン上で保存したプログラムをファイルを指定して実行します。実行結果に"pen1""pineapple""apple""pen2"が表示されます。

$ ruby regexp2.rb
"pen1"
"pineapple"
"apple"
"pen2"

正規表現に一致する数値を取り出すプログラムを記述し保存する

以下のようなプログラムを記述し、ファイル名をregexp3.rbとして保存します。

tel = '090123456789'

tel.match(/(\d{3})(\d{4})(\d{4})/)
p $1
p $2
p $3

正規表現に一致する数値を取り出すプログラムを実行する

コマンドライン上で保存したプログラムをファイルを指定して実行します。実行結果に"090""1234""5678"が表示されます。

$ ruby regexp3.rb
"090"
"1234"
"5678"

正規表現に一致する文字を書き換えるプログラムを記述し保存する

以下のようなプログラムを記述し、ファイル名をregexp4.rbとして保存します。

tel = '090-1234-5678'

p tel.sub(/-/, '')
p tel.gsub(/-/, '')

正規表現に一致する文字を書き換えるプログラムを実行する

コマンドライン上で保存したプログラムをファイルを指定して実行します。実行結果に"0901234-5678""09012345678"が表示されます。

$ ruby regexp4.rb
"0901234-5678"
"09012345678"