お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 個別エントリー・アーカイブ :

2007年1月 6日

Ruby における 「正規表現」

今後「正規表現 (Regular Expression)」について Rubyの上で、いろいろ 検証・実験を行ってゆこうと思っているのだが、 そのために、Ruby における 「正規表現」の取り扱い方法を先に学んでおく。

まず、Rubyにおける「正規表現」の表現方法は Ruby「正規表現リテラル」 にあるとおり、
/ で囲まれた文字列は正規表現です。
とある。つまり、「/Ruby/」も正規表現だし、「/^.*$/」も正規表現ということになる。 また別の表現方法として、 「Ruby正規表現クラス」にある 「Regexp.compile(string)」または「Regexp.new(string)」によっても表すことができる。 つまり、上記の例は「Regexp.compile("Ruby")」、「Regexp.compile("^.*$")」 または 「Regexp.new("Ruby")」、「Regexp.new("^.*$")」 とも表現できる。

Rubyにおいて 上記の正規表現とマッチを行う方法はいくつかあるが 最もオーソドックスな方法が Ruby「=~」メソッド を利用することである。 マッチが成功すればマッチした位置のインデックスを、そうでなければ nil を返す。 文字列の先頭にマッチした場合には値「0(ゼロ)」 が返されるので注意が必要だ。

Rubyによる 正規表現の試験プログラムの例題として
test="The quick brown fox jumps over the lazy dog."
p test =~ /quick/
としてみる。 このスクリプトを実際に実行してみると、画面には「4」と表示される。 これは、文字列 "The quick brown..." のうち 「quick」という文字列が 5文字目であり、 先頭の文字を0番から数えると4番目になるため 答えが 「4」となっている。 このスクリプト例は、
test="The quick brown fox jumps over the lazy dog."
p test =~ Regexp.compile("quick")
と書いても全く同じ結果となる。

ちなみに、文字列に全く含まれていない正規表現とマッチさせる、 例えば
test="The quick brown fox jumps over the lazy dog."
p test =~ /abcdef/
のような場合は、実行結果に「nil」と表示される。

【参考リンク】



カテゴリー: Ruby , 正規表現     2007年1月 6日 22:52

トラックバック

このエントリーのトラックバックURL:
http://www.skymerica.com/blog/yotsumoto/mt/mt-tb.cgi/671


コメント

コメントしてください




保存しますか?


 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.