- Home ›
- Ruby正規表現の使い方 ›
- 正規表現の基本 ›
- HERE
正規表現の利用方法
まず正規表現をどのような時に使用するのかを簡単に確認しておきます。
例として変数に代入されている文字列オブジェクトが、ある文字列と一致しているかどうかを調べてみます。
str = "Hello" if str == "Hello" then print("文字列はHelloです¥n") else print("文字列はHelloではありません¥n") end
このサンプルでは変数に格納された文字列と「Hello」と言う文字列が完全に一致しますので「文字列はHelloです」が出力されます。
このように完全に一致しているかどうかを調べるだけならば「==」メソッドを使うことで判定が出来ます。では次に対象の文字列に「e」で始まり「o」で終わる文字列が含まれているかどうかを調べるにはどうすればいいでしょうか。
このような条件ですと、一致する文字列は数限りなく存在します。例えば次のような文字列に一致します。
eo eao ebo eabo eabao eabbdddeeebo
正規表現を使わないのであれば、文字列の中に「e」と「o」が含まれているのを確認し「e」の方が先に記述されているかどうかを調べるといった方法でも可能です。ただ今回はこの方法でもいいのですが、また別の条件となった場合には全て記述しなおさなくてはなりません。
このような複雑なパターンも正規表現を使用することで簡潔に定義できます。正規表現を使うと「e」で始まり「o」で終わるパターンは次のように表すことが出来ます。
/e.*o/
パターンが定義できれば、あとは対象の文字列の中にパターンが含まれるかどうかを調べるだけで済みます。詳しい記述方法は次のページ以降で確認していきますが、次のように記述します。
str = "Hello" if /e.+o/ =~ str then print("eで始まりoで終わる文字列が含まれます¥n") else print("eで始まりoで終わる文字列が含まれません¥n") end
正規表現を使えば、検索する条件が変わった場合でもパターンの定義だけを変更すれば基本的な部分は変わりありません。
正規表現として記述できるパターンは、単なる文字列が含まれているかどうかだけではなく、行頭にある場合に限定したり、指定の文字が1回以上続けて記述されているものなど複雑な条件が指定できるようになっています。では次のページ以降で正規表現の実際の使い方を確認していきます。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku require "kconv" str = "Hello" if /e.+o/ =~ str then print(Kconv.tosjis("eで始まりoで終わる文字列が含まれます¥n")) else print(Kconv.tosjis("eで始まりoで終わる文字列が含まれません¥n")) end
上記のプログラムを「test1-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )