久しぶりの勉強会

感想

日常生活に戻っていきなりの勉強会でした。
かなり準備不足で、説明がちぐはぐなのがいけなかった。


たとえば、「微分」の説明とかは、自分の中にすでにストーリーができていて、
わき道もはっきり見えるから、すらすらとできるんだけど、
正規表現は、メインストリートがぼんやりと見えるぐらいだから、
説明にまとまりがないんだろう。


id:kiwanamiさんの出す問題は激しく面白かった。
みんなでわいわいやりながら解くのはとても楽しいし、
充実していた気がする。


で、正規表現がどうゆうふうに実装されているかきいたら、オライリーの本を読めと。
ぱらぱらと見たけれど、面白そう。
世の中に面白そうな本があふれていて困る。

ポイント

  • 正規表現のルールを実際に問題を解いて、身につける。
  • 正規表現の役割は、入力チェック, マッチする文字列の抜き出し
  • 正規表現だけでがんばらない
    • 正規表現で大まかに絞り込む
    • プログラムではじく
  • templateを作って、わかりやすいプログラムを作ろう。
    • 長い文章で、複数の文字列を書き換えるときとか
    • "私の名前は$name$です。私の出身地は、$place$です。"のように、置き換える文字列を適当な記号を作ってあらわして、replaceを使って書き換える。


var text = "私の名前は$name$です。私の出身地は、$place$です。"
text = text.replace(/\$name\$/,"koplec").replace(/\$place\$/,"japan")

問題

郵便番号にマッチする正規表現(たとえば、810-0001)
日付マッチ問題
  • 基本:以下の日付表記にマッチする
    • 20001112
    • 2008-6-10
    • 2008-12-1
    • 1995/5/13
  • 応用:以下の日付表記にはマッチしない。
    • 1234/13/0, 2222/4/52のようなありえない日付
  • さらに応用:2004/2/30みたいな日付
メールアドレスにマッチする正規表現

本気だと、50行ぐらいになるらしい。。。

"/home/koplec/temp/aaa.tar.gz"のようなファイルのパスに対し、
cookieのキーに対する値を取り出す正規表現

"key1=value1;fukuda=sorry;a=b"の "fukuda"というkeyにたいする"sorry"という値を取り出す

朝日新聞の文章を可愛くする。

文章の句読点の"。"を"にゃん。"にするjavascriptコードを書く。

3桁区切り問題

12345678 -> 12,345,678のように与えられた数字列を3桁ずつに区切るにはどうすればよいか?