Rubyがミニツク

あなたのRubyの技術に関するより詳しい知識と理解を増やします。

Ruby入門コース

このコースについて

Rubyのeラーニング研修システムはRailsを使ってWebアプリケーション開発ができる技術者の育成を目指します。 そのため、Railsを扱うことができるだけのRubyの知識を得ることがRuby入門コースの目標となっています。

コンテンツ一覧

ヒント レッスンの名前をクリックすると、その内容を表示します。

次のコンテンツ ホームへ戻る

正規表現

正規表現を使うことによって、以下のようなことを確かめることができます。

  • ある文字列の中に特定の文字列を含んでいるか
  • ある特定のパターンに文字列が当てはまっているか

Rubyでは「//」で囲まれた文字列が正規表現オブジェクトになります。以下のようにすると文字列オブジェクトがあるパターンとマッチするかどうかを確かめることができます。

/パターン/ =~ マッチングしたい文字列

パターンのところが正規表現オブジェクトです。パターンと文字列が合うか調べることをマッチングと呼びます。マッチングは=~演算子を使うことでおこなえます。

以下のようにすると文字列を処理できます。
<pre class="prettyprint linenums">
p /b/ =~ “abcde” #=> 1
</pre>

=~演算子を使ったマッチングは左から順番におこないます。マッチしたので「1」が返ってきました。戻り値のはマッチした文字の位置で、インデックスと同じように0から順番に数えます。以下のように複数の文字をパターンにした時は最初の文字の位置を返します。

p /bc/ =~ "abcde"  #=> 1

複数の文字をパターンにした時に、文字の並びで確認します。そのため、文字の並びの一部だけ含んでいる場合はマッチしません。

p /abcde/ =~ "bcde"  #=> nil 

Rubyの正規表現は以下のように大文字と小文字を区別します。

p /b/ =~ "abcde"  #=> 1
p /A/ =~ "abcde"  #=> nil 

パターンにできる文字にはさまざまなものがあります。アルファベット以外にも以下のような文字をパターンにできます。

p /b/ =~ "abcde"        #=> 1
p /3/ =~ "01234"        #=> 4
p /う/ =~ "あいうえお"  #=> 2
p /\%/ =~ "\.\$\%"      #=> 3

記号を文字として認識させるには、記号の前に「\」を付けます。

これまでの例ではマッチした文字がどこの位置にあるのかを示しました。また、マッチしていなければnilを返すことを知りました。以下のように正規表現の返り値はif文などの条件に使えます。

str = "abcde"
if /a/ =~ str
  puts("パターンにマッチした")
end

上記の例では、パターンにマッチした時だけ実行する条件を作りました。


次のコンテンツ ホームへ戻る