昨日の続き。もっかい問題を引用すると、
/"([^"]*)"/ #1 /^0?[0-3]?[0-7]{1,2}$/ #2 /^\b[\w.]{1,12}\b$/ #3
ですね。#1は昨日やったので、#2から。
この正規表現にマッチする文字列を数値としてみて、一番大きいのは377。[0-7]あたりから8進数の匂いがぷんぷんするので、377を8進数として10進数の数字に直すと255になります。はじめの0?は8進数を表すお約束であってもなくても良い。ということで、これは0から255までを表す8進数に文字列がちょうどマッチするような正規表現ということがわかりました。
#3は実は答え見ちゃったんですが、すごく単純に[\w.]、ワードを構成する文字とドットが1回以上12回以下繰り返しているような文字列にマッチするという意味で良いみたい。しかし、はじめとおしりのの\bが付いてるのを忘れないように。これが実はすてきで、例えば、
.txt test. ..
みたいな文字列は、文字列全体としてはマッチしない。.txtという文字列の一つ目の\b区切りの位置はドットのすぐ後ろにあたる。だから、.txtという文字列はマッチしない。これはファイル名が妥当か確認するような時に用いられる。よくできてるね。というわけで、練習問題2終わり。
- 作者: Jeffrey E.F. Friedl,田和勝
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2003/05/26
- メディア: 単行本
- 購入: 4人 クリック: 241回
- この商品を含むブログ (106件) を見る