第6回正規表現と検索 レポート課題 氏名:小山田晃平 学籍番号:c1110393 語学クラス:英語5 コース:政策マネジメント 1.筆記問題 A.誕生日1992年 1.0d19 2進数表示 19/2 =9 あまり1 9/2 =4 あまり1 4/2 =2 あまり0 2/2 =1 あまり0 1/0 =0 あまり1 0d19=0b10011となる 16進数表示 19/16 =1 あまり3 0d19=0x13となる 2.0d92 2進数表示 92/2 =46 あまり0 46/2 =23 あまり0 23/2 =11 あまり1 11/2 =5 あまり1 5/2 =2 あまり1 2/2 =1 あまり0 1/2 =0 あまり1 0d92=0b1011100となる 16進表示 92/16 =5 あまり12 12は16進数ではcとなるので 0d92=0x5cとなる B. 1992年11月13日 19+92+11+13 =135 0d19=0x13 0d92=0x5c 0d11=0xb 0d13=0xd 0x13+0x5c =0x6f 0x6f+0xb =0x7a 0x7a+0xd =0x87 C. STDERR.printfとすることで標準エラー出力でprintfを実行することが出来る 2.プログラム問題 A.作成したデータ内容 ドコモの2012夏モデルの機種の機種名、ディスプレイのインチ数、重量、カメラ の画素数、バッテリーの容量についてのデータ B.データファイル GALAXY S3 4.8インチ 139g 800万画素 2100mAh ARROWS X 4.6インチ 155g 1310万画素 1800mAh AQUOS PHONE sv 4.5インチ 138g 1210万画素 1900mAh REGZA PHONE 4.3インチ 139g 1310万画素 1800mAh Optimus Vu 5.0インチ 176g 800万画素 2000mAh L-06D JOJO 5.0インチ 176g 800万画素 2000mAh AQUOS PHONE ZATA 4.7インチ 140g 1210万画素 1900mAh ELUGA power 5.0インチ 133g 810万画素 1800mAh Xperia GX 4.6インチ 127g 1300万画素 1700mAh MEDIAS X 4.3インチ 123g 810万画素 1800mAh Optimus it 4.0インチ 131g 820万画素 1650mAh Xperia SX 3.7インチ 95g 810万画素 1500mAh F-09D ANTEPRIMA 3.7インチ 120g 810万画素 1460mAh ARROWS Me 3.7インチ 125g 500万画素 1520mAh ELUGA V 4.6インチ 137g 1320万画素 1600mAh AQUOS PHONE st 3.4インチ 108g 800万画素 1520mAh C.分類の仕方 機種名で調べたり、インチ数、画素数など自分が求めるスペックで検索し、どの 機種が自分にとって良いのかを判断するような検索ができるようにしたい D.分類に使った検索パターン a. 一.機種名でARROWSを検索したいときにスペルは分からないが最初の文字はAであ ることが分かっていた場合に"^A"と検索する 予想は^を付けているのでAから始まる機種が検索出てくると思う つまり、ARROWS X、AQUOS PHONE sv、AQUOS PHONE ZATA、ARROWS Me、AQUOS PHONE stが表示されると思う 二.インチ数が4.6か4.8インチの機種が何れなのが調べたいとき"4.[68]"と検索す る 予想は[ ]を使っているので4.6か4.8のデータがあるものが出ると思う つまり、GALAXY S3、ARROWS X、Xperia GX、ELUGA V が出ると思う 三.カメラの画素数について1000万画素以上の機種を知りたいとき "1[1234567890][1234567890][1234567890]万画素"と検索する 予想は、[ ]の中のどれかがはいれば良いので1000万画素のものから1999万画素 までのデータがあるものが出ると思う つまり、ARROWS X、AQUOS PHONE sv、REGZA PHONE、AQUOS PHONE ZATA、 Xperia GX、ELUGA Vが出ると思う 四.ARROWS XとGALAXY S3の2つの機種でスペックを比べたいときに"ARROWS X|GALAXY S3"と検索する 予想は|を使っているので入力した両方のものが出てくると思う つまり、ARROWS XとGALAXY S3が出ると思う 五.ARROWSを検索したいときにRが1つなのか2つなのか分からなかった場合に "ARR?OWS"と検索してみる 予想は、?は直前の文字が0または1回出現すれば良いので、AROWSでもARROWSでも 検索で出てくると思う。 つまり、ARROWS XとARROWS Meが出てくると思う b.意外な検索結果が出そうなもの "5.0"と検索する。予想は5.0インチのものが検索で出ると思うが、もしかしたら "5.0"の"."が正規表現で使うピリオドと判断されるかもしれない。そうすると、 "5"の後に"0"がついているものが出てくるかもしれない。その場合5.0インチの ものもいっしょに検索で出てくるのかどうか検索してみる。 予想は、5.0インチのOptimus 、VuL-06D JOJO、ELUGA powerと、 5の後に0があるXperia SX、ARROWS Me、AQUOS PHONE st、Optimus itがでると思う E.実行結果 a. 一. pan{c111039}% egrep "^A" data_c111039.dat [~/Ruby] ARROWS X 4.6インチ 155g 1310万画素 1800mAh AQUOS PHONE sv 4.5インチ 138g 1210万画素 1900mAh AQUOS PHONE ZATA 4.7インチ 140g 1210万画素 1900mAh ARROWS Me 3.7インチ 125g 500万画素 1520mAh AQUOS PHONE st 3.4インチ 108g 800万画素 1520mAh 二. pan{c111039}% egrep "4.[68]" data_c111039.dat [~/Ruby] GALAXY S3 4.8インチ 139g 800万画素 2100mAh ARROWS X 4.6インチ 155g 1310万画素 1800mAh Xperia GX 4.6インチ 127g 1300万画素 1700mAh ELUGA V 4.6インチ 137g 1320万画素 1600mAh 三. pan{c111039}% egrep "1[1234567890][1234567890][1234567890]万画素" data_c111039.dat ARROWS X 4.6インチ 155g 1310万画素 1800mAh AQUOS PHONE sv 4.5インチ 138g 1210万画素 1900mAh REGZA PHONE 4.3インチ 139g 1310万画素 1800mAh AQUOS PHONE ZATA 4.7インチ 140g 1210万画素 1900mAh Xperia GX 4.6インチ 127g 1300万画素 1700mAh ELUGA V 4.6インチ 137g 1320万画素 1600mAh 四. pan{c111039}% egrep "ARROWS X|GALAXY S3" data_c111039.dat [~/Ruby] GALAXY S3 4.8インチ 139g 800万画素 2100mAh ARROWS X 4.6インチ 155g 1310万画素 1800mAh 五. pan{c111039}% egrep "ARR?OWS" data_c111039.dat [~/Ruby] ARROWS X 4.6インチ 155g 1310万画素 1800mAh ARROWS Me 3.7インチ 125g 500万画素 1520mAh b. pan{c111039}% egrep "5.0" data_c111039.dat [~/Ruby] Optimus Vu 5.0インチ 176g 800万画素 2000mAh L-06D JOJO 5.0インチ 176g 800万画素 2000mAh ELUGA power 5.0インチ 133g 810万画素 1800mAh Xperia SX 3.7インチ 95g 810万画素 1500mAh ARROWS Me 3.7インチ 125g 500万画素 1520mAh AQUOS PHONE st 3.4インチ 108g 800万画素 1520mAh F.結果の考察 a. 一は予想通り最初がAであるものが検索が出てきた。 二は予想通り4.6と4.8の両方が検索が出てきた。 三は[ ]の中のどれが入ってもいいので予想通り1000~1999画素のものまで出てき た。 四は|を使ったので予想通り入力した両方のものが出てきた。 五は?を使ったので予想通りRが1つでも2つでも検索できるのでARROWSとついたも のが検索で出てきた b. 予想通り、5.0がついたものと5の後に0がついたものが検索された。 だた、1650mAhと5の後に0がついているOptimus itがなぜか検索されなかった なぜ検索されないのかとても疑問に思った G.利用した正規表現 a. 一は^を使った ^は、先頭の文字列のみを探すものである 二と三は[ ]を使った [ ]は、[ ]内に入力されたどれかが一致するものを検索するものである 四は|を使った |は、「または」という意味で入力されたものすべてを検索するものである 五は?を使った ?は直前の文字が0または1回出現し検索するものである b. .を使った .は、任意の1文字の候補を検索するものである 3.感想 今回はどんな風に検索をすれば意外な検索結果が出るかどうかということでかな り時間がかかった。そして、なぜ1650mAhのOptimus itが検索で出てこないのか 考えても分からなかった。 自分の持ち物などで正規表現を活用しているものは携帯の検索やYahooやGoogle の検索に使われていると思う 参考文献 第3回基礎プログラミング1(キーボードから入力して計算させるには)|入力した 値をプログラムで使おう http://roy/~madoka/2012/r1/03/r1_03_03_theme_01_gets.html 西村まどか 第6回基礎プログラミング1(正規表現と検索)|うろ覚えの検索 http://roy/~madoka/2012/r1/06/r1_06_03_theme_01_patternmatching.html 西村まどか 第6回基礎プログラミング1(正規表現と検索)|何回か繰り返される文字を探した い http://roy/~madoka/2012/r1/06/r1_06_04_theme_02_repetation.html 西村まどか 第6回基礎プログラミング1(正規表現と検索)|いくつかある候補を探したい場合 http://roy/~madoka/2012/r1/06/r1_06_05_theme_03_or.html 西村まどか