正規表現の利用方法

正規表現の使い方を確認していく前に Ruby において正規表現をどのような時に使用するのかを解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 10 日更新)

正規表現の利用方法

例として変数に代入されている文字列オブジェクトが、ある文字列と一致しているかどうかを調べてみます。

# encoding: UTF-8

str = "Hello"

if str == "Hello" then
  puts("文字列はHelloです")
else
  puts("文字列はHelloではありません")
end

このサンプルでは変数に格納された文字列と「Hello」と言う文字列が完全に一致しますので「文字列はHelloです」が出力されます。

このように完全に一致しているかどうかを調べるだけならば == メソッドを使うことで判定が出来ます。では次に対象の文字列に「e」で始まり「o」で終わる文字列が含まれているかどうかを調べるにはどうすればいいでしょうか。

このような条件ですと、一致する文字列は数限りなく存在します。例えば次のような文字列に一致します。

eo
eao
ebo
eabo
eabao
eabbdddeeebo

正規表現を使わないのであれば、文字列の中に「e」と「o」が含まれているのを確認し「e」の方が先に記述されているかどうかを調べるといった方法でも可能です。ただ今回はこの方法でもいいのですが、また別の条件となった場合には全て記述しなおさなくてはなりません。

このような複雑なパターンも正規表現を使用することで簡潔に定義できます。正規表現を使うと「e」で始まり「o」で終わるパターンは次のように表すことが出来ます。

/e.*o/

パターンが定義できれば、あとは対象の文字列の中にパターンが含まれるかどうかを調べるだけで済みます。詳しい記述方法は次のページ以降で確認していきますが、次のように記述します。

# encoding: UTF-8

str = "Hello"

if /e.+o/ =~ str then
  puts("eで始まりoで終わる文字列が含まれます")
else
  puts("eで始まりoで終わる文字列が含まれません")
end

正規表現を使えば、検索する条件が変わった場合でもパターンの定義だけを変更すれば基本的な部分は変わりありません。

正規表現として記述できるパターンは、単なる文字列が含まれているかどうかだけではなく、行頭にある場合に限定したり、指定の文字が1回以上続けて記述されているものなど複雑な条件が指定できるようになっています。では次のページ以降で正規表現の実際の使い方を確認していきます。

サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

str = "Hello"

if /e.+o/ =~ str then
  puts("eで始まりoで終わる文字列が含まれます")
else
  puts("eで始まりoで終わる文字列が含まれません")
end

下記のように実行して下さい。

正規表現の利用方法

-- --

Ruby において正規表現をどのような時に使用するのかを解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。