http://readmej.com/

2005 年 03 月 21 日(月)

 以前どこかで書いたかもしれませんが、正規表現というものがあります。正規表現とは砕けて言えば「とある法則性を見つける記述」ということになるんでしょうね。例えばWindowsのファイル検索で【*.jpg】とか書いたりしますよね?あれも簡単な正規表現の一種で*っていうのは「0文字以上の何か」にマッチするんです。『a.jpg』でも『hogehoge.jpg』でも『.jpg』でもマッチするんです。正式な正規表現は実際はプログラムで使われることが多いんですけどね。

 さてここで世界中の話題となっているメールアドレスの正規表現です。メールアドレスとは文章で言えば「半角英数字で『@』があって『.』で繋がってる文字」なんですが、コレがまたやっかいなんですよ。RFC(インターネット標準化機構が定める規約)に従わないD○C○M○とかが厄介の根源です。そもそもローカルパートに『.』が連続して出てくるとか存在していいわけがないのですが、それでもそんなメールアドレスが実在する現在、RFCに従った正規表現だけではNGで、非常に難しい文字列が並ぶ事になります。『(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")(?:\.|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*"))*@(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:\.(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))+』うわバグッた!と思わないでOKです。これがとある日本人が書いたメールアドレスの正規表現です。たった十数文字を表すのにこんな複雑なことをしなきゃいけないなんて不条理ですね。何だか判らん?大丈夫です。私も判らんです(汗

 私が思うに、それでも正規表現はサイコーに便利ですよ。


← 前日 翌日 →