/var/log/masayoshi/masayoshi.life.log

とりあえず、書きたいこと書くだけ。

その招待状は本物ですか?



あなたは友人のパーティで受付をすることになりました、受付では事前に郵送された招待状が無いと入れません。


さらにその友人は


「内容の最後にあるコードもチェックしろよ」


と言っていきました、そのコードは


o_961026


というパターンです、しかし悪人がパーティに忍び込んでくることも想定してかその友人は


「そうそう、コードはデータベースにまとめたから。


だけど、そのコードにもパターンがあるからそれもチェックしてね」


と言いにきました、そこにメモが残されてました


「いいか、最初は【f,u,s,o】のどれかで始まって次に【_】が来て最後の6桁の数字が来る。


ただしその数字は9から始まっている」


という内容でした、しかし自分で判断するのもめんどうです。


そこでRubyの出番です。




とりあえず要点をまとめてみよう



  • 最初は【f,u,s,o】のどれかで始まっている

  • その次に【_】が来る

  • そして6桁の数字なのだが最初は【9】である


それを判別するには…正規表現だ。


とりあえずそれを判定する正規表現を書いてみた。





print "Content-type:text/html"
sil = "o_961026"
if /^[f|u|s|o]_9[0-9]{5}/ =~ sil
print "OK"
else
print "NO!!"
end



パーティも終わり友人があなたの元に来ました


「ありがとう、よく判断できたね」


Ruby正規表現のおかげかな」


「へぇー」


その後二人は居酒屋に飲みにいきました





  • if 〜 endと言うのは条件分岐なんですよ、これは後で入りますよ

  • //で囲まれた部分に正規表現を書くんですよ

  • ^というのは文字列の最初ですね、今回は【f,u,s,o】のどれかで始まることが前提でした

  • [f|u|s|o]と言うのはですねぇ、どれか1文字が一致したらok何ですよ。


今回は^[f|u|s|o]だから、このどれかで始まったらまずはokなんですよ



  • _9はいいですね、省略して

  • [0-9]{5}は「0-9の数字が5回繰り返してる事」を表してますよ。




どうでもいいこととして【f,u,s,o】これも意味があるんです。


見なくてもいいやって思ってもとりあえずは見て笑えw



  • f = Fujimura[藤村]

  • u = Ureshino[嬉野]

  • s = Suzui[鈴井]

  • o = Ooizumi[大泉]


あなたはどうでしょう陣の仲間たちのパーティのうけつけをしていたのです。


では条件分岐もふれましょう





print "Content-type:text/html"
sil = "o_960423"
if /^[f|u|s|o]_9[0-9]{5}/ =~ sil
print "OK"
else
print "NO!!"
end


  • まずはさっき言ってたパターンに合うかを判定します。


[if /^[f|u|s|o]_9[0-9]{5}/ =~ sil]ですね



  • これが正解だったら、「ok」と表示されますよ



  • もしも、ダメだったらelseの内容「print "NO!!"」が実行されて「NO!!」と表示されます

  • そして、endで処理を終わらせます