Subject:#05(2) 正規表現 From: c106044@f.koeki-u.ac.jp To: ruby-05-23@e.koeki-u.ac.jp Date: Fri, 25 May 2007 17:54:25 +0900 (JST) X-Mailer: Mew version 4.2 on Emacs 21.3.50 / Mule 5.0 (SAKAKI) ◎1.作成したデータファイルと説明 ・データファイル(data.txt)↓ セリカ CELICA 前輪駆動 1999年 トヨタ 絶版 スープラ supra 後輪駆動 1993年 トヨタ 絶版 エムアールエス MR-S ミッドシップ 1999年 トヨタ 販売中 スプリンタートレノ SPRINTER TRUENO 後輪駆動 1983年 トヨタ 絶版 フェアレディゼット FAIRLADY Z 後輪駆動 2002年 日産 販売中 スカイライン SKYLINE 後輪駆動 2006年 日産 販売中 シルビア silvia 後輪駆動 1999年 日産 絶版 アールエックスセブン RX-7 後輪駆動 1999年 マツダ 絶版 アールエックスエイト RX-8 後輪駆動 2003年 マツダ 販売中 ロードスター roadster 後輪駆動 2005年 マツダ 販売中 インプレッサ IMPREZA 四輪駆動 2000年 スバル 販売中 レガシィ LEGACY 四輪駆動 2003年 スバル 販売中 ランサーエボリューション LANCER Evolution 四輪駆動 2001年 三菱 販売中 コルトラリーアート COLT RALLIART 前輪駆動 2006年 三菱 販売中 エフティーオー FTO 前輪駆動 1994年 三菱 絶版 ジーティーオー GTO 四輪駆動 1990年 三菱 絶版 シビック CIVIC 前輪駆動 2006年 ホンダ 販売中 インテグラ INTEGRA 前輪駆動 2001年 ホンダ 絶版 エスニセン S2000 後輪駆動 1999年 ホンダ 販売中 スイフトスポーツ SWIFT sport 前輪駆動 2005年 スズキ 販売中 カプチーノ Cappuccino 後輪駆動 1991年 スズキ 絶版 アルトワークス ALTO Works 四輪駆動 1998年 スズキ 絶版 ケイワークス Kei Works 四輪駆動 1998年 スズキ 販売中 コペン copen 前輪駆動 2002年 ダイハツ 販売中 ブーンクロスフォー boon X4 四輪駆動 2004年 ダイハツ 販売中 ・データファイルの説明 スポーツタイプの車のリストを作成しました。今回は、車種を増やして25種類に しました。 まず、左から…車名、英語表記の車名、駆動方式、発売年、メーカー、新車販売 状態の順に並んでいます。 注意: ・駆動方式は、1車種に複数ある車もありますが、多く売れている駆動方式に 設定しました。 ・発売年は、現在販売中のモデルは、現行のモデルの発売年(マイナーチェンジ は含まず)で、絶版モデルは、最終型の発売年を設定しています。 ◎2.作成したプログラム ・search.rb↓ #!/usr/koeki/bin/ruby print "検索パターン(パターンと検索語句を入力): " pattern = STDIN.gets.chomp! regexp = Regexp.new(pattern, nil, "e") while line=gets if regexp =~ line print line end end ◎3.プログラムの正規表現検索結果(11通り) ・.(ピリオド) irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): .TO エフティーオー FTO 前輪駆動 1994年 三菱 絶版 ジーティーオー GTO 四輪駆動 1990年 三菱 絶版 アルトワークス ALTO Works 四輪駆動 1998年 スズキ 絶版 ・[](大括弧) irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): 199[0-9] セリカ CELICA 前輪駆動 1999年 トヨタ 絶版 スープラ supra 後輪駆動 1993年 トヨタ 絶版 エムアールエス MR-S ミッドシップ 1999年 トヨタ 販売中 シルビア silvia 後輪駆動 1999年 日産 絶版 アールエックスセブン RX-7 後輪駆動 1999年 マツダ 絶版 エフティーオー FTO 前輪駆動 1994年 三菱 絶版 ジーティーオー GTO 四輪駆動 1990年 三菱 絶版 エスニセン S2000 後輪駆動 1999年 ホンダ 販売中 カプチーノ Cappuccino 後輪駆動 1991年 スズキ 絶版 アルトワークス ALTO Works 四輪駆動 1998年 スズキ 絶版 ケイワークス Kei Works 四輪駆動 1998年 スズキ 販売中 ・?(クエスチョンマーク) irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): [エビ]?ック アールエックスセブン RX-7 後輪駆動 1999年 マツダ 絶版 アールエックスエイト RX-8 後輪駆動 2003年 マツダ 販売中 シビック CIVIC 前輪駆動 2006年 ホンダ 販売中 ・* irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): .*ック アールエックスセブン RX-7 後輪駆動 1999年 マツダ 絶版 アールエックスエイト RX-8 後輪駆動 2003年 マツダ 販売中 シビック CIVIC 前輪駆動 2006年 ホンダ 販売中 ・+ irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): ワ+ー アルトワークス ALTO Works 四輪駆動 1998年 スズキ 絶版 ケイワークス Kei Works 四輪駆動 1998年 スズキ 販売中 ・^ irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): ^イン インプレッサ IMPREZA 四輪駆動 2000年 スバル 販売中 インテグラ INTEGRA 前輪駆動 2001年 ホンダ 絶版 ・| irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): silvia|civic シルビア silvia 後輪駆動 1999年 日産 絶版 ・() irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): RX-(7|8) アールエックスセブン RX-7 後輪駆動 1999年 マツダ 絶版 アールエックスエイト RX-8 後輪駆動 2003年 マツダ 販売中 ・\b irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): \bWorks アルトワークス ALTO Works 四輪駆動 1998年 スズキ 絶版 ケイワークス Kei Works 四輪駆動 1998年 スズキ 販売中 ・\d irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): \d4 エフティーオー FTO 前輪駆動 1994年 三菱 絶版 ブーンクロスフォー boon X4 四輪駆動 2004年 ダイハツ 販売中 ・\D irsv{c106044}% ./search.rb data.txt [~/Ruby] 検索パターン(パターンと検索語句を入力): \D1999 セリカ CELICA 前輪駆動 1999年 トヨタ 絶版 エムアールエス MR-S ミッドシップ 1999年 トヨタ 販売中 シルビア silvia 後輪駆動 1999年 日産 絶版 アールエックスセブン RX-7 後輪駆動 1999年 マツダ 絶版 エスニセン S2000 後輪駆動 1999年 ホンダ 販売中 ◎4.利用した正規表現の説明 ・.(ピリオド)…任意の1文字にマッチする。今回の場合は、TOの前にくる1文字 が何でも良いということで3種類が出た。 ・[](大括弧)…括弧内に入れた文字のどれか1文字に合う。今回は、1990年から 1999年にマッチするよう設定した。 ・?(クエスチョンマーク)…直前のパターンが0か1回現れるもの。今回は、"エ" か"ビ"が"ック"の前に来るものを検索した。 ・*…直前のパターンが0回以上現れるもの。今回は、"ック"の前に来るものを検 索した。 ・+…直前のパターンが1回以上現れるもの。1回以上を除いて*とは全く同じ。 ・^…文字列の先頭にマッチするもの。今回の場合、左側のカタカナ車名の先頭 にマッチする。 ・|…または、の意味。左右どちらかのパターンにマッチすれば良いというもの。 ・()…長い表現の一部分だけくくるときに使うもの。 ・\b…単語の境界にマッチするもの。しかし、単語として独立しているものしか 検索することが出来ない。 ・\d…数字のどれかにマッチする。ただし、0-9の半角のみ ・\D…数字以外の全ての文字にマッチ。\dの反対。 ◎5.考察 今回は、data.txtを増やして様々なパターンが検索できるようになりましたが、 しかし、大多数のものが無理矢理検索できたという感じです。特に、?、*、+、 ()は、目を覆いたくなるほどの無理矢理です。 また、$、\数字 など、data.txtの構想不備によって検索出来なかったり、この 前教わった正規表現オプションの使い方に迷ったり、正規表現の指定方法やこの 前の例でやった名前に〜が付く人など出来ないことがたくさんあったのが勉強不 足でした。 ◎6.参考文献 ・ゲームソフト:グランツーリスモ4内の自動車データ(発売年のみ) ・頭の片すみにあった記憶 注意:記憶があいまいな箇所もあるのであまり参考にしないでください。 ◎7.感想 疲れました…もうその一言しか出ません。でも、今回教わったことを殆ど理解出 来ていなかったので、もう一度教科書を見なおしたりして復習しないといけない と感じました。