こもろぐ @tenkoma

What We Find Changes Who We Become -- Peter Morville著『アンビエント・ファインダビリティ 』

広告:本ブログで紹介している書籍等商品の紹介でAmazonアソシエイトを利用していることがあります。

例えば正規表現に拘泥しない

まだ正規表現脳が未発達なモノで、1つめのメールアドレスの正規表現?はスルーしていたが、2つめのIPアドレスはひどいってことがすぐわかった。「([0-2]*[0-9]+[0-9]+)」とか意図はわかるがまったくチェックに使えないし、「.」はエスケープされていない。簡単な目視のチェックのみで動作確認を行わなかった点が問題ですね。って…。
ところで正規表現のバイブルだと思っている詳説 正規表現 第2版では、IPアドレス正規表現について使える例がいくつか載っている。
一つめは文章の中からIPアドレスを探し出す例(p.5)

'<emphasis>([0-9]+(\.[0-9]+){3})</emphasis>'

IPアドレス正規表現としては正確ではないけれど、文章中のIPアドレスを探し出す目的で使うならこれで十分なことが多いと思う。(前後のタグは、「タイプセッティング用」と書かれている)
IPアドレスの厳密な正規表現についての考察がp.181に書かれている。
厳密な正規表現が書かれているが、それを利用するかどうかは自分のニーズに照らし合わせて自分自身で判断しなければならない。と書かれている。もっと簡便に

'^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$'

と言う風にグループ化してとりだし、正規表現以外の方法を使うことも出来るとのこと。(IPアドレスの各部分のグループ化は自分で追加した)確かにその方がプロジェクトの個別の事情に柔軟に対処できると思う。

詳説 正規表現 第2版

詳説 正規表現 第2版