2009年03月19日 18:00 [Edit]

「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ

ああ、まただよ...

正規表現って、プログラミング言語間の差が少ないサブ言語なのに、なぜ「PHP」がつくとダメ正規表現ばかり登場するのか。うんざりだ。


かなり使えるPHPの正規表現まとめ - IDEA*IDEA ~ 百式管理人のライフハックブログ ~
メールアドレスは厳密にチェックしようとするとなかなか難しいのですが、簡単なチェックだったらこれでOKぽいですね。
/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/

全然OKじゃない


最初の[^0-9]にしてからもうだめ。

メールアドレスの正規表現が一筋縄では行かないことは、ちょっとぐぐればすぐに出てくるし、しかも正規表現でマッチできるのはたかだかnobody@example.com、すなわちaddr-specまでで、From: Anonymous <nobody@example.com>、すなわちmailboxを正規表現でマッチするのは不可能なのはもう10年以上前から知られている(Perl 5.6以降の拡張正規表現であれば可能だが、それだともう狭義の正規表現からは逸脱してしまう)。

Perlメモ
Jeffrey E. F. Friedl氏原著による 「詳説 正規表現」にはメールアドレスはネストした コメントを持つことができるので正規表現で表わすのは不可能であると 書いてあります

で、nobody@example.com、すなわちaddr-specのみにマッチする正規表現は、以下のとおりとなる。

404 Blog Not Found:ドコモもauはとりあえず"da..me."@を受け取れるようにしとくべし
perlfaq9 - Networking ($Revision: 8539 $) - search.cpan.org
If you want to just check part a to see that the address is valid according to the mail header standard with a simple regular expression, you can have problems, because there are deliverable addresses that aren't RFC-2822 (the latest mail header standard) compliant, and addresses that aren't deliverable which, are compliant. However, the following will match valid RFC-2822 addresses that do not have comments, folding whitespace, or any other obsolete or non-essential elements. This just matches the address itself:
    my $atom       = qr{[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]+};
   
my $dot_atom   = qr{$atom(?:\.$atom)*};
   
my $quoted     = qr{"(?:\\[^\r\n]|[^\\"])*"};
    my $local      = qr{(?:$dot_atom|$quoted)};
    my $domain_lit = qr{\[(?:\\\S|[\x21-\x5a\x5e-\x7e])*\]};
    my $domain     = qr{(?:$dot_atom|$domain_lit)};
    my $addr_spec  = qr{$local\@$domain};
Just match an address against /^${addr_spec}$/ to see if it follows the RFC2822 specification.

ちなみに、これをまとめると、

という正規表現になる。ここではコピペしやすいように、textareaタグの中に入れてある。以下、それをJavaScriptで簡易チェック。

はRF2822非準拠
かなり使えるPHPの正規表現まとめ - IDEA*IDEA ~ 百式管理人のライフハックブログ ~
正規表現は慣れないと使いづらいですよね。しかし使えると超絶便利。よく使うパターンを覚えておいて応用を利かせていきたいものです。

誰だって間違いはおかすし、そして今や正規表現を間違えるというのは最も間違えることの多い部分でもあり、達人でもそこから逃れるすべがほとんどない以上、間違った正規表現を見つける都度「そうじゃない」と指摘し、そして指摘されたらすぐ直し、お互いにハッピーというのが本来の作法だと私は信じている。どの言語を使っていても、その点は変わらない。

でもね....これを見てくれ。

トップにくるのは、「正規表現:メールアドレスかどうか調べる - phpspot」なのである。そしてここで紹介されている正規表現、^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$は。悪名高きda.me..@docomo.ne.jpを引っ掛ける一方で、dankogai+regexp@gmail.comを弾いてしまう。

これでは、

もうおまえらPHPerは正規表現をブログにうpするんじゃねえ!

と言われても無理もなくなってしまうのではないか。

GoogleはGoogleで、ペイドリンクとかはつぶさにつぶす癖に、こういうものは対策してくれないんだろうか....悪化が良貨を駆逐していく様が悪化の一途をたどる前に。

Dan the Regular Expressionist


Agile Media Network Partner Blog

この記事へのトラックバックURL

この記事へのトラックバック
オライリー矢野様より献本御礼。 正規表現クックブック Jan Goyvaerts / Steven Levithan / 長尾高弘訳 [原著:Regular Expressions Cookbook] もっと早く出てしかるべきだった一冊。 と同時に、「言語繚乱」とも言える今でこそ出せた一冊でもある。 こう叫び...
/for more regexp users/ &gt; any(other) - 書評 - 正規表現クックブック【404 Blog Not Found】at 2010年04月21日 17:29
新政党「たちあがれ日本」のホームページが話題になっていたので私も見てみた。そして、メーリングリストの受付フォーム中に記述されたメールアドレスのチェック用のJavaScriptが気になった。以下に引用する。 if (!node.match(/^[A-Za-z0-9]+[¥w-]+@[¥w¥.-]+¥.¥w{2,}$...
新党のホームページを見てメールアドレスのチェック方法について考えた【ockeghem(徳丸浩)の日記】at 2010年04月12日 11:46
先日、「PHPでメールアドレスを正確にチェックするクラス」というものを作って公開したのですが、想像以上にいい勉強をさせてもらった。 メールアドレスの正規表現について PEARのライ...
CheckUser.class.phpを作って勉強になったこと【firegoby】at 2009年07月11日 07:03
javascriptによる簡易regexでは対応できないケースがでてしまったので、いろいろ参考にしつつruby版を作った。
メールアドレスのバリデーション by Ruby【Motivation Driven Development】at 2009年04月03日 18:27
『言論の質」って何が決めているのだろう。 書くことの難しさ ネットの言論はなぜ質が低いか?インターネット-最新ニュース:IT-PLUS新聞に比べるとネット言論の質は低い??。もはや一部の新聞社幹部や研究者ぐらいしか言いそうもないことをあえて指摘してみたい。
言論の質は誰が決めているか【404 Blog Not Found】at 2009年03月28日 11:05
正規表現を使ったプログラムって、テストが十分に行えないような気がして、どうなんだろうと思うんだけどね。あと、Perlerは細かい難癖をつけるのでうざいとは思う。
正規表現なんてこの世から消えればよいのに【某氏のたわごと】at 2009年03月24日 07:19
「xxxをblogに書くのはやめてくれ」などとblogに書くのはやめてくれ。 http://d.hatena.ne.jp/nowokay/20090320#1237539966 今回、PHPスポットさんの正規表現記事から色んなところに話題が波及しているわけですが、この問題の大元はGoogleにあると思います。 そ...
Google衆愚スパイラル【katyos開発室】at 2009年03月22日 06:14
(タイトルはid:hasegawayosukeさんが言ってたよ) ああ、まただよ… 「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ 正規表現って、プログラミング言語間の差が少...
「danコガいはもう正規表現をblogに書くな」と言わせないでくれ【へぼへぼCTO日記】at 2009年03月22日 01:04
サーバー側書くときには特別な理由がない限りPHP使う、PHPerだけど 404 Blog Not Found - 「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ に対して一言。 まぁ内容が正規表現ゆえゆえというより、「PHP使いはもうメアドの正規表現をblogに書くな」という内容な
[PHP][日記] PHPerだけど正規表現まわりの問題がもりあがっているようで一言【toytools log : kaw】at 2009年03月21日 18:21
PHPer(?)のハシクレとして、小飼弾のブログ記事 「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ を興味深く読みました。 かなり使えるPHPの正規表現まとめという記事中にダメ正規表現があるとのこと。さらには、PHP周辺ブログにダメ正規表現が多いとのこと。
PHP使いはもう正規表現をblogに書くな【真夜中のプログラミングTips】at 2009年03月21日 00:13
もうおまえらPHPerは正規表現をブログにうpするんじゃねえ! と言われても無理もなくなってしまうのではないか。 http://blog.livedoor.jp/dankogai/archives/51189905.html 弾さんの咆哮に対して、「PHP関係ねぇ!十把一絡げにすんな」的な反論がブコメでもチラホラ見られる
PHPはそのニセ科学的な文化が問題なのでは?【よくわかりません】at 2009年03月20日 23:57
指摘されたらすぐ直し、お互いにハッピーというのが本来の作法だと私は信じている。どの言語を使っていても、その点は変わらない。 404 Blog Not Found:「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ 「幸せになれます」への方向を薦めるのが掟。言語だろうが
[コ] いつもの掟【リーマン空間::派遣社員のblog】at 2009年03月20日 22:37
小飼氏を引用するのもちょっとアレなのであるが。 GoogleはGoogleで、ペイドリンクとかはつぶさにつぶす癖に、こういうものは対策してくれないんだろうか....悪化が良貨を駆逐していく様が悪化の一途をたどる前に。 404 Blog Not Found:「PHP使いはもう正規表現をblogに書く
「正しい」検索結果とは【生産性がダンチなんだよ】at 2009年03月20日 17:49
プログラマ+αブロガ+ベストセラー作家=?
プログラマ+αブロガ+ベストセラー作家【天気晴れ - ITと趣味のブログ】at 2009年03月20日 14:14
私自身驚いたのだが、'test@[127.0.0.1' . "\\\x1f]"はRFC2822準拠でなのである。 へぼへぼCTO日記 - 「danコガいはもう正規表現をblogに書くな」と言わせないでくれおかげで上記のコードもvalidだ。なんてこった
regexp - 'test@[127.0.0.1' . "\\\x1f]" はRFC2822準拠【404 Blog Not Found】at 2009年03月20日 05:03
「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ - 404 Blog Not Found 正規表現って、プログラミング言語間の差が少ないサブ言語なのに、なぜ「PHP」がつくとダメ正規表現ばかり登場するのか。うんざりだ。 いやぁでもPHP以外も大概アレじゃないっすか? Perl
TIPS/テクニック/ノウハウ/虎の巻 を書く資格【それ、Gentooだとどうなる?】at 2009年03月19日 22:15
404 Blog Not Found:「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ「PHP使いはもう...
「PHP使いはもう正規表現をblogに書くな」と言われた件について【phpspot開発日誌】at 2009年03月19日 21:17
Twitter 上の はてブ BOT から飛んできたのでチョット気になって見てみました。 かなり使えるPHPの正規表現まとめ - IDEA*IDEA ?? 百式管理人のライフハックブログ ?? パッと見「おー、便利便...
[言語][PHP]非常に簡単な正規表現テンプレ【漫ろで行こう】at 2009年03月19日 20:22
この記事へのコメント
ネットに載ってる正規表現なんぞを鵜呑みにするのが悪いんじゃ?

開発者ってのは、知識のない人間が知識を持たずに使えるツールを作るべきだと思うが、肝心の開発者に知識がないんじゃ、救いようがない。プログラミングのテクニックやら正規表現ってのはソフトウェアの利用者でなく開発者のためにあるモノで、その情報の真偽も調べずに使う開発者が一番いただけないと思う。そういう開発者こそ糾弾されるべきで、改善されるべきは彼らだ。

たとえその情報が間違っていたとしても、善意で情報を公開している人間に暴言を吐く事に、暴言を吐いた人間のストレス発散以上の価値があるだろうか。ないよね。

せっかく知識があるのに、こういう形で公開しちゃうなんて非常にもったいないと思うが、今更こんなコメント、読んでないよね。
Posted by っていうか at 2009年10月01日 16:56
劣等種であるPHPは必ずや迫害すべき対象である。Perlを超える普及率を持つことは絶対に許されない。
You are Racist
Posted by You are Racist at 2009年09月16日 06:43
じゃあお前がまとめろよ
Posted by おまえが at 2009年08月21日 13:09
言いたかったことは「紹介するなら正しいものを」ってことですよね。きっと。
気持ちは分からなくもない。
簡単なものを紹介してとっつき易くするのは良いけれど、
割とそこで止まってしまっている紹介者が多すぎるから。
書籍にしたって、ブログと違って金払わせてるんだから、もっと言及したものも一緒に載せて置けよって思います。

ただ、とげのある言い方と言うのは、如何にそれが正論だったとしてもそれだけで受け入れられなく可能性があります。
なので、あなたの正論は至極尤もなんだけれども、
大勢の人が嫌悪感を感じたのではないかと思います。

能力の高い方だと思うので、そういうところで優しい方になれれば、鬼に金棒だと思います。

記事はとても参考になりました。ありがとうございました^^
Posted by 葉月 at 2009年07月16日 16:23
正規表現はお得意のようですが
デザインセンスは備えておられないようですね
Posted by おなまえ at 2009年06月29日 13:53
レイアウトぶっ壊れてるけど、得意の正規表現で何とかしたら?
Posted by あがが at 2009年06月20日 16:55
うん小飼
Posted by 西 at 2009年06月10日 11:40
100件越えて吹いたw
Posted by _ at 2009年05月13日 22:32
あはは、つらいねこりゃ。
再来年くらいに言語単位で炎上する時代終了しないかなぁ。
Posted by もひもひ at 2009年05月13日 01:51
先頭に [^0-9] は酷い間違いですな。
ネット上には分かりやすい入門サイトがいくつも
あるから読めばいいのに。

図解でみる正規表現入門
http://funcchan.blog16.fc2.com/

正規表現/PHP入門
http://www.scollabo.com/banban/php/php_15.html

フリーザにもわかる正規表現入門
http://taro4.blog37.fc2.com/blog-entry-33.html
Posted by 小林 at 2009年05月11日 21:30
da.me..@docomo.ne.jp については、
ドコモが態度を変更させたよね。

参考→ http://neta.ywcafe.net/000976.html

このエントリで例に出された正規表現も書き換える時期に来たね。

PHPspot、IDEA*IDEA、DAN KOGAIはそれぞれサンプル正規表現を出したらいいと思うよ。
Posted by RFC大事だよね at 2009年04月12日 08:31
なるほど
Posted by shou at 2009年04月10日 02:07
>なんかよーわからんが要するに便所の落書きにマジ切れしたってことか。
生意気な物言いをする奴は突っつきたくなる性分なんだよね。
マジ切れした場合はその記事無視するんで、コメント残さないよ。

>それなら「バカ爺ぃ黙れ!」と上書きすれば話だろうに。
>普通に「ダンのばーか」でいいじゃんか?
それこそ便所の落書きだ。
非難するには、その理由を書かなければ相手に伝わらない。
まぁ、弾さんがここを見ているかどうかは微妙な所だが…

>>私はPHPを使っていない。
>とかいう2ch系の書き込みは余計に意味がわかんない。
これは
>ぺちぱー大発狂
という2ch系の書き込みに対して、2ch系の書き込みで返しただけだ。
Posted by ズズキのKei at 2009年04月08日 16:31
なんかよーわからんが要するに便所の落書きにマジ切れしたってことか。それなら「バカ爺ぃ黙れ!」と上書きすれば話だろうに。辺に理屈をこねて、しかも関係ない言語戦争に参画するアホがいるから「なんで?」なのさね。

こと、
>私はPHPを使っていない。
とかいう2ch系の書き込みは余計に意味がわかんない。普通に「ダンのばーか」でいいじゃんか?
Posted by shou at 2009年04月08日 16:13
>ぺちぱー大発狂
言い返したいけど、うまい言葉が見つからなくて大発狂…って所か。
そしてあなたには残念だが、私はPHPを使っていない。
Posted by ズズキのKei at 2009年04月08日 14:40
ぺちぱー大発狂
Posted by $ at 2009年04月08日 10:22
>言語たたいてるんじゃなく、正規表現すら使いこなせない、
>向上心のないバカをたたいてるだけなのに、
>なんでこんなに燃え上がってるのだ?
 
本当にそうだったら、タイトルに「PHP」の文字出す必要ないよね?
 
>「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ
>「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ
>「PHP使いはもう正規表現をblogに書くな」と言わせないでくれ
 
大事なので3回書いてみた、つまりはそういう事だ。
※タイトルに書かなかったら、そういう言い訳も出来たのにね…
 
そもそも人の間違いを「それ見たことか」と罵倒してるだけなら誰だって出来る。
それってでもギーグが一番嫌う「口だけ」なのと何が変わるのだろうか?
本当に出来る人は黙ってPHPのコードを差し出す。
 
■エンジニアの説得力はコードじゃないの?
http://www.asks.jp/users/hiro/50416.html
Posted by ズズキのKei at 2009年04月06日 10:18
言語たたいてるんじゃなく、正規表現すら使いこなせない、向上心のないバカをたたいてるだけなのに、なんでこんなに燃え上がってるのだ?
Posted by shou at 2009年04月03日 17:38
※「○x言語はもう終わり」の時にも同じようなコメントを書いたが

こういう言語批判の裏の"本当の意図"は、
他の言語を貶めて"自分の好きな言語のシェアが伸びるように"情報操作したいだけなんだよね。

でもね…この方法って全くの逆効果。
自分からPerlの評判落としてる事に気が付かないんだろうか?

この記事見た所で「こんな偉そうな口きく生意気な奴らが使ってる言語なんて使わねぇよ!」って思うだけだよ?
※ちなみにRubyの作者もビッグマウスで同じ過ちを犯してる

あと、助言を。
最近の若者は、生意気な口きく奴には付いていかないよ?
Posted by ズズキのKei at 2009年04月01日 20:04
アフィリエイトだらけでクソみたいに重くて
汚らしいblogですね。
ユーザビリティ考えられない馬鹿はblogを書くなよww
Posted by ゆ at 2009年04月01日 18:08
>正規表現って、プログラミング言語間の差が少ないサブ言語なのに、なぜ「PHP」がつくとダメ正規表現ばかり登場するのか。うんざりだ。

固定概念というかなんというか。残念な記事ですね。
まるで若い2ちゃんねらのような発言です。
ここのコメントの一部にはまともな意見もありますが
その全てもアインシュタインではなく素人の意見として
みているんでしょうか。
ほんとうに残念です。
Posted by そん at 2009年03月29日 12:09
// phpspotメソッド
var res = 弾.phpspot("その正規表現には無駄な (?: ~ ) が2つあるけど何故?");

alert(res); // "スルー"

Posted by _ at 2009年03月25日 05:40
phpspotの人は正規表現について語らないほうがいいのでは
http://labs.cybozu.co.jp/blog/akky/archives/2007/10/phpspot-bad-regex.html
Posted by   at 2009年03月25日 00:45
こわい
Posted by   at 2009年03月24日 11:18
PERLerだからスクリプト言語の地位を乗っ取られたPHPが憎いんだよ、まあPHPのなんちゃってPGの多さには確かにゲンナリするけど
それかアルファブロガー様だから必死になって釣り記事作ってんじゃね
Posted by   at 2009年03月24日 01:48
>その正規表現には無駄な (?: ~ ) が2つあるけど何故?

の指摘が予想通りスルーされてしまった件。
人の指摘はするのに自分が指摘されたら修正すらしないんすかー?
Posted by _ at 2009年03月23日 22:43
っていうか、そもそもメールアドレスの仕様が無茶苦茶過ぎ&各社(ドコモなど)がそれを無視し過ぎ・・・が根本的な原因なのでは。

弾さんも叩きやすい相手ばかり叩いてないで、もっと大きい根本を叩けばいいのに。そういうことができる立場の人でしょうし。

なんなら、弾さんが新しくて間違えにくくて完璧な「メアドの仕様」および「それにマッチする正規表現」を提示されてはいかがでしょうか?
Posted by ジーダ at 2009年03月23日 13:57
こんなん、標準関数に近いものをひとつ作るべきですね。みんなが悩んでたら、人類の貴重な時間をロスしているって思いますが。
Posted by 真面目に at 2009年03月23日 11:56
伸びてると思うと道徳的に煽ってるかphp者を煽ってるという…
Posted by あ at 2009年03月23日 01:30
個人が自分のブログで好きなように書いた記事に対して、「『Web上に間違った情報を流すな』と大声でわめくな」と批判する人が、その根拠に「自治や規制反対」を挙げてる時点で、もう、ね・・・
なんの冗談かと
Posted by 正確な情報を広められることがそんなにお嫌い? at 2009年03月22日 17:09
PHPが嫌いというか、たぶん、自分が編み出した、もしくは見つけた答え1つだけが正解だと思っていて、それ以外を排除したいんだろうね。

隣のクラスの奴1人が嫌いになったら、そのクラス全体を嫌いになるという小学生レベルだと思うよ。


正規表現1パターンでメールアドレスヒットさせるわけ?
それ以外は認めないわけ?意味がわからねぇ。


携帯メールはつかわせないで、PCメールだけ受け付けるとか、いろいろ条件あるじゃん、実際の製品って。

都度動けばいいんじゃないの?
何を統一しようとしているの?
人間が作った物を人間がつかうんでしょ?


PHP使いでもすごい奴いっぱいいると思うし、そこらへんを理解しようともしないで、脳内で自己完結した自己満足と他者否定で浮かれあがっている、ただのあたまでっかちだと思った。


あのさ、俺はRubyが大嫌いだ。だけど、必要であればRuby使うよ。Javaだって大嫌いだ。だけど、Javaで書くのが適していると思ったら、Javaつかうんでないの? PHPとかPerlとかさ、どうでもいいじゃん。出来た製品がどう使われるかってところが大事なわけで。それがモノを作ることだと思うけどな。


“開発者のための開発”をしてるひとって、こういうこと言う人多い気がする。


逆に、「PHPキモ!」とか、感情的な意見を言ってくれたほうが、わかりやすいし納得いくけどな。

Posted by 正規表現なんぞちょっと使えればいいんだよ at 2009年03月22日 03:00
webを自治しようとしてんのかな、こういう記事をかく人は。
Posted by ~使いは~するなとかやめろ at 2009年03月22日 01:45
ああ、まただよ...

http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000119.html#wp521182

> x (extended) フラグ
>
> 正規表現は解読が困難になる場合があります。特に、メタ文字やメタシーケンスを多用した正規表現は難解になる場合があります。たとえば、次のようになります。
>
> /<p(>|(\s*[^>]*>)).*?<\/p>/gi

\s+ じゃないと\sを付ける意味が無い。
/s フラグを付けてないから . が改行文字にマッチしない。
/i を付けてあるから <p>~</P> にもマッチしてしまう。

「ヘルプ製作者はもう正規表現をヘルプに書くな」と言わせないでくれ
Posted by PHPを触らない人 at 2009年03月21日 20:04
正規表現がどうこう以前に、Webの特性を知ったらどうですか?
ネット上に溢れる情報の真贋なんて、結局は自分自身で確かめる他ないんですよ。
有名な検索エンジンの上位に来ようが、それは変わらない。
Wikipediaの情報は100%確かなものですか?
違うでしょう?
今回の記事は正規表現の間違いに憤ってるように見えますけど、結局のところ、「Web上に間違った情報を流すな」と大声で喚いてるだけだって気付いてますか?
規制や自治がお好みなら、回線を切断したスタンドアロンな環境で好きなだけやってて下さい。
Posted by 精神年齢が小学生並にしか見えません at 2009年03月21日 16:37
「自己中脳内論理をblogに書くな」と言わせないでくれ
Posted by 五十歩百歩 at 2009年03月21日 14:47
素朴な疑問2.

名前付きグループの使用
http://livedocs.adobe.com/flash/9.0_jp/main/00000118.html#wp520966

> /(?P<name>(\w|[_.\-])+)@(?P<dom>((\w|-)+))+\.\w{2,4}+/;

ヘルプのサンプルコードってどうしてこういう
無駄に分かりにくいものを用意してくるの?

(\w|[_.\-]) って [\w.\-] だよね?

弾さん、どうしてこういう分かりにくくて使いにくい
サンプルが氾濫するの?

あれ、名前付きグループで捕獲したものを $<名前> 等で取り出す手段が見当たらない。$1は出来て$<名前>は無理?
なんじゃそりゃ。

正規表現テスター (actionscript3.0)
http://1st.geocities.jp/neeetest/as3_regexp.html
Posted by PHPを触らない人 at 2009年03月21日 14:06
メールアドレスにマッチする正規表現は正規表現が難しいんじゃなくてRFCを順守するのが難しいだけだよね。例のブログはそれ以前の問題だけど。
Posted by PHPを触らない人 at 2009年03月21日 11:00
タイトルがPGPだったら興味そそられますね。
これじゃプロとして守備範囲に入ってる人が

アマチュアを無闇に叩く野球の野村的構図じゃないですか?
スリーボールでしょうがないからストライク投げてみましたような
記事。
どうせならフォークボール(PGP)な問題提起をみたいです。
Posted by 正規雇用 at 2009年03月21日 05:38
(笑)
Posted by (笑) at 2009年03月21日 02:24
これ、通るのかな
Posted by (笑) at 2009年03月21日 02:21
え?
メールアドレスチェックはそこまで厳密にせんでいいだろw
熱くなりすぎw
バカ?
Posted by (笑) at 2009年03月21日 02:20
えらそうに(笑
Posted by phper at 2009年03月20日 23:01
こういう使用している言語で人を叩く人間というのは、20世紀にfjと共に絶滅したと思ったらそうでもないのか。
Posted by phper(笑) at 2009年03月20日 21:38
煽りエントリで小遣い稼ぎですか。
Posted by パポン at 2009年03月20日 21:15
なんでPHPerはPHPしか覚えようとしないのか、それが不思議でたまらないわ
Posted by hoge at 2009年03月20日 20:19
正規表現で厳密にチェックすると、実在する携帯メールアドレスをはじいてしまう件
Posted by   at 2009年03月20日 19:47
たしかにこの正規表現はイケてない。
でもさすがにphperがどうのこうのってのはうざい。

phpつかいでもまともな人は沢山いるでしょ?
(greeの藤本さんとか)
phperが正規表現云々ってんじゃなくて
そのエントリーを書いた人のもんだいじゃねーの?

Posted by ポール at 2009年03月20日 19:47
今のところ「正規表現」でググるとこの記事が一位。

> ああ、まただよ...

2007年10月17日
phpspotの人は正規表現について語らないほうがいいのでは
http://labs.cybozu.co.jp/blog/akky/archives/2007/10/phpspot-bad-regex.html

> と言わせないでくれ
という持ちも分からなくはないです。

さすがに同じこと繰り返しているので、成長してほしいという思いなんでしょうね。
Posted by edry(えどりぃ) at 2009年03月20日 18:15
どうでもいい話してないで
なんか役に立つアプリ書いてみろよ。
どアホ共が。
Posted by おまえら at 2009年03月20日 16:32
階層の管理はこのツールを使うとカンタンですよ。

■azenrouytM氏作成 正規表現作成・テスト用ツール
Jane用ツール ReplaceStrTool ( バージョン2.8 : 2008/11/12 )
http://1st.geocities.jp/neeetest/

>ちなみに、これをまとめると、

..の下にある正規表現をクリップボードにコピーしてから
このツールの「貼り付け」ボタンを押してみて下さい。

(注

このツールは鬼車、またはWSH用の正規表現を書くためのツールです。
Posted by PHPを触らない人 at 2009年03月20日 16:24
素朴な疑問。

>ちなみに、これをまとめると、

その正規表現には無駄な (?: ~ ) が2つあるけど何故?

>[a-zA-Z0-9_!#\$\%&'*+/=?\^`{}~|\-]

\wや\dを何故使わないのだろう? /i も使えるかな?

>\^

PHPでは文字クラス内の ^ をエスケープするものなの?

>[\x21-\x5a\x5e-\x7e]

何故わざわざ16進表現文字で書いているのだろう?

(余談)
テキトーなことを書いているサイトが検索上位に来ると
苛立つ気持ち、良く分かります。自分もそうですから。

しかしプロ野球選手が小学生の野球少年に向かって怒鳴り
散らすようなことをしてはいけません。
あなたが (?: ~ ) の階層を管理出来ていないことに対して
私が

”「カッコの階層の管理も出来ない人にはブログを書くな」
と言わせないでくれ”

と言ったとして何かが良い方向に向かうでしょうか?


いいえ、


ケフィアです。
Posted by PHPを触らない人 at 2009年03月20日 16:15
PHP土人が悔しさのあまり発狂しているようだな(^笑^)
Posted by unknown at 2009年03月20日 15:12
>>PHP も書くけどね
># http://jp2.php.net/manual/ja/function.ereg.php
ほんとに書いてるのかなぁ。
普通に使ってる人ならeregなんかよりpreg出すけどね
# しかもサンプルの正規表現はデリミタ付いてるし。


こんなんだから「PHP使ってるやつはダメダメだー」なんて言われるんじゃないかなぁ


>>774
モジュールの正当性を鵜呑みにするのもどうかと思うよ。
というか、正しいものが分からないのに、そのモジュールが正しいとかなんて分かるわけがないんだが。

>バカは実装の中身なんか知る必要はない
むしろプログラムを書くなが正しいかと。
Posted by 774 at 2009年03月20日 15:03
ちなみに ぁゃιぃ連中が騒いでたのは
CPANなんてまだまだ全然ろくなモジュールが登録されてなくて
まともなアプリ作るにはクラスライブラリ自作が必須だった時代の話。

ちなみに当時の Rubyの普及率は・・・ほぼ誤差の範囲(w
Pythonは、なぜかLinuxインストーラのお陰で地味に普及してたな(w
Posted by とおりすがり at 2009年03月20日 13:56
PEARにはValidateモジュールとかがあるのに使うことも思い付かず、RFCも読まないで勝手な思い込みで正規表現を「発明」してチェックするなんてバカの所行だよ。

おかげで正しいメールアドレスを「不正なアドレスです」とか弾く一方で正しくないメールアドレスが通るような糞サイトが量産されているわけだ。(+を使えないサイトが多いからGmailやpostfixのサブアドレスを活用できなくて非常に困る)

これは正規表現云々の問題ではない。粗探しや誹謗としか捉えられない訂正や批判は実効性がない。どう考えても、正しいモジュールを探してやってそれを使うようにサジェストすべきだろ。バカは実装の中身なんか知る必要はない。「こういうのがあるから使えば間違いない」がいちばんいいんだよ。
Posted by 774 at 2009年03月20日 13:45
訂正:

× スキャナ
◎ スキャナとパーサ
Posted by とおりすがり at 2009年03月20日 13:35
ついでに言っとくと、この手の話題は もう 10年以上前から何度も繰り返し議論されてて、いい加減食傷気味だ。
2ch が出来るずっと前、ぁゃιぃワールド常連の某氏がそんなような事を言っていた覚えがある。もちろんそん時の答も、RFCに沿ってPerlでスキャナ構成しておしまい、にしたけどw
Posted by とおりすがり at 2009年03月20日 13:21
仕事ではJava、プレイベートではPHPを書いてます。

なぜかPHPはよく叩かれる言語ですよね。
何か作るとき楽に書けていい言語なんですけどね。

楽すぎてあまり考えない新米さんが多すぎるのも良くないんですかね。
きちんと使うといい言語ですよね、皆さん?!
Posted by takahirown at 2009年03月20日 13:19
最新のRFC見つけてきて、スキャナー書けば終了
というだけの話で、何故こんなに大騒ぎするのか理解に苦しむ。

というか、なんでも一つの正規表現で済まそうとする人は
そもそも 関数を作って記述を局所化しモジュール化するスキルが足りないだけでしょ。
Posted by とおりすがり at 2009年03月20日 13:15
phpが何の関係があるんですか?
特定の国の人の犯罪率が高いと、そいつら全部入国すんなって言うチャネラの方ですか?
Posted by itatata at 2009年03月20日 12:43
そうかもしれなけど、品がないですねこの記事。
伝え方は伝える内容ぐらい大事なんじゃないでしょうか。
Posted by afoka at 2009年03月20日 12:40
確かに、ウェブ上の情報が不正確だと思うなら
正しく参照されるようなテキストを作ったほうがいいよね。
悪貨が良貨を駆逐する前に、良貨を作ってないんだもの。

内容は勉強になっただけにもったいない感じがする。
あと、最初は正規表現の技術的問題を指摘するのかと思ったら
実質的にはメルアドの仕様に関する知識なのは多少肩透かしを食らった。
Posted by HIroyuki at 2009年03月20日 12:31
嫉妬に狂ったゴミプログラマたちが湧いてますねえ。

弾さん、まだまだ「旬」のようです。

勝間さんと一緒に、時勢にのって
ガッポリ稼いでください。
Posted by おおー at 2009年03月20日 12:23
phpspotとIDEA*IDEA は PHP についてのエントリを全て削除すべきだと思う。そのくらい悪影響があるのだけは確か。
Posted by うん at 2009年03月20日 11:43
PHP でコード示せって騒いでる阿保どもは、本当に PHP を触ったことあるんだろうか? 弾さんの記事ん中に書いてあんだろうが、PHP でもそのまま使える regex コードが。
# http://jp2.php.net/manual/ja/function.ereg.php

そもそも参照元の記事に「OK っぽい」とかある時点で明確な意図を持って検証を行ってないのは明らかなわけで、そういうのを文脈や、書いてるコードのレベルを読みと[られ]ずコピペして腐ったコードが量産されてくって構造はマトモにプログラミングを生業としてやってる立場から見ると文句のひとつも言いたくなる。
Posted by PHP も書くけどね at 2009年03月20日 11:38
ゴミがゴミプログラマを叩く
ネタがなくなったらどうでもいいPHP叩きを書けば盛況になっていいですね
世の中に山ほどあるゴミPerlスクリプトはなんで叩かないんですか?
アルファブロガー?ただのプログラマ崩れのゴミじゃないですか
Posted by 釣られてやろうか at 2009年03月20日 11:36
弾さん!熱いぜ!
Posted by 弾丸 at 2009年03月20日 11:23
プログラミングの発展はいいことですがアフィ厨同士共食いしててください
Posted by ワラタ at 2009年03月20日 09:57
こういう議論が行われるから、プログラミング力の底上げがされるのですね。
プログラマとして「どこまで気にしているか」が、とても参考になります。

素晴らしい事だと思います。勉強になります。どうもありがとうございます。

余談ですが、
このタイトルをもじった、トラックバックのサイトがある為に、
このタイトルがさらに生きていますね。
皮肉ですが、「打ち合わせしていたのではないか?」と思うような、ユーモアがあります。

後、この記事は、悪い事はしていないはずですが、実店舗の場合だと、
営業妨害、名誉毀損って言われてしまうかも知れませんね(笑
Posted by ひつじ at 2009年03月20日 09:51
せっかくGoogleに正しい情報が載るチャンスなのに
このタイトルはもったいない。
Posted by Yukke at 2009年03月20日 06:17
外国で女漁ってる奴にまともな正規表現なんか書けるわけないって事ですね。わかります。
Posted by ss at 2009年03月20日 04:28
困るのはそのコードを採用する人間であって、わかる人間とわかろうとする人間はこんなものに惑わされないのでは?
Posted by   at 2009年03月20日 03:50
で、弾さんに文句はいうけど、普通個々までかかれたらphpで普通にコードだすだろw phper(wは結局人格攻撃しかできないのか?
プログラマーなら少なくとも、批判されるコードがあったら、批判するの当たり前だと思うけど・・ そうじゃないらしいw
Posted by む at 2009年03月20日 03:20
>メールアドレスは厳密にチェックしようとするとなかなか難しいのですが、簡単なチェックだったら

としてる通り、そこじゃ厳密さは求めてない。実際、その正規表現で多くのメアドはヒットする。100%ヒットしないと満足しないですか?あぁそうですか。じゃあその際には"厳密に"と書いておくべきですね。

それにその引用元ではメアド以外にも多くの例題が挙げられてますが、それらについて揚げ足取りはなしですか?このメアドの件だけで全否定ですか?

まぁPHPは簡単に書ける分、未熟な技術者による情報の氾濫はありますが、未熟者は自信のない内容は書くなってことか。管理人さんはものすごーい自分のコードに自信をお持ちなんですね。絶対に間違った内容は発信しないわけですね。
間違ったら修正すればいいって?じゃあPHPSPOTも修正すればいいわけですね?それって、そもそもPHPとは関係なく書き手の姿勢の問題ですよね?

P.S.
>悪名高きda.me..@docomo.ne.jpを引っ掛ける
引っかけないなら、ドコモユーザーは来るなってことだよね?

>一方で、dankogai+regexp@gmail.comを弾いてしまう。
弾くのは問題かもだけど、ウェブサービス屋としては、1メアド1アカウントとするためには、これは弾きたい。(gmailの場合にかぎるけど)gmail以外で + が入ってるメアドって .@ なメアド並に希じゃない?
Posted by anon at 2009年03月20日 02:51
phpspotはPHPerから見てもひどい。たのむから一緒にしないでほしい。
Posted by shin at 2009年03月20日 02:42
PHPerですがこれには同意。正直ひどいコードが多いですし「あぁ、これでいいんだ」とコピペプログラマーがそれを案件にでも使った日には…。
ただ、これはPHPerがというよりはPHP自体と、その先駆者(?)達の罪の方が大きいようにも感じます。よいコードを読むことが出来ない環境にいたら、仕方ないとも言えなくはないかと。
Posted by tamakiii at 2009年03月20日 01:45
>サクラさん

貢献しているだけに間違った時の悪影響も大きいかと思います。
読み手の自己責任だと言ってblogの書き手が自分の記事に責任を持たなくなったら、ウェブはどんどん間違った情報が増えていくでしょう。

PHPerへの配慮が欠けているのには同意。
その気持ちもわからなくはないんだけど、感情的になりすぎ。
Posted by しゅん at 2009年03月20日 01:24
「phpspotはもう正規表現をblogに書くな」だったらそれなりに説得力はあるんですがね。他のブログで以前突っ込まれてた事もありますし。今回はIDEA*IDEAか。。。
Posted by 通りすがり at 2009年03月20日 01:16
簡単なチェックならいいじゃないですか
Posted by najeira at 2009年03月20日 01:03
弾さん、ちょっと感情的すぎですね。弾さんともあろう方が「PHPだと」とか「PHPer」はとか根拠のない集合論言っちゃうなんて。PHPerもいろいろ。当たり前だけど。Perlerもいろいろでしょ:-)
Posted by manamanmana at 2009年03月20日 00:33
どーせ書くならPHPでかけば。。。。
自分の土俵だけでやるんじゃなくって。
Posted by とーりすがり at 2009年03月19日 23:57
たいそうな批判をする割には校正をしないんですね。
何回読み直したんですか?

このエントリー読む限り、小飼って人も大した事無いね。
Posted by ハイビ at 2009年03月19日 23:55
PHPで毎日ご飯を食べているものです。
私は何年も前にphpspotなどを見て勉強をして今の生活を手に入れています。
phpspotの管理人さんがもし間違った正規表現を書かれていたとしても、
phpspotを見て、PHPを覚えた人、成長した人はきっとたくさんいます。
目には見えませんが、その貢献度は多大なるものだと思います。
昔、自分がお世話になったサイトが悪く書かれてしまうのは非常に悲しいです。

(実際にはまったく動かないわけではないからあれは間違いではないと私は思ってます。というか、仕事でプログラム書くならコピペしても自己責任ですよ。プロなんですから。)

私はIDEA*IDEAもphpspotも好きなサイトで、いつも有益な情報を発信してくれるサイトであると思っています。PHPが好き、嫌いよりも前に、ブラウザの先で見ている人のコトをもう少しお考えになって記事を書いて頂くといいかなっと思いました。
Posted by サクラ at 2009年03月19日 23:53
安物の釘でも頑丈な家具を組み立てることはできます。正規表現も実用に耐えうるものであればそれで良いのです。:-)
Posted by pl at 2009年03月19日 23:31
法律家でもなく、法学部出身でもないのに、法律のことを語るやつらはBlogを書くな!

ですね。わかります。
Posted by あ at 2009年03月19日 23:11
無理矢理すぎてさすがにネタ切れ感(苦笑
Posted by at 2009年03月19日 22:58
いちいち怒鳴る必要がなんであるんでしょうか。
正しい方向へ導きたいならそう書けばいいのでは?
Posted by kens at 2009年03月19日 22:34
RF2822→RFC2822
Posted by m11m at 2009年03月19日 22:26
danさんって器が小さいね!
Posted by sinh at 2009年03月19日 22:24
「ダメ正規表現ばかり登場」とあるけど、何件登場したから、こんな結論に導き出されたのですか?
Posted by dam at 2009年03月19日 22:23
っていうか、なんかタイトルが変じゃないかい?正規表現を理解してないって話じゃなくて、メールアドレス(の書式)の理解が足りないって話だよね。
Posted by shin at 2009年03月19日 22:18
みな勘違いしているが、PHPが問題ではなく「PHPを使う人」のメンタル面が問題なんだよ。逆で、そういうメンタルな人がPHPをよく使ってるというだけのこと、PHP云々は根源的な問題じゃないよ。

例えば「詳細 正規表現」などという本の存在が気にならないひとはプログラミングを他者に説くには不向き、ということでは。
Posted by noname at 2009年03月19日 22:13
メールアドレスの厳密なチェックは、そのメールアドレスにメールを送ることだけ。

正規表現でメールアドレスをチェックするのは無駄な努力。
Posted by ほるほる at 2009年03月19日 22:07
PHP以外のblogはまとも、って言ってますか?
間違った情報の量の問題?
言語でくくるのは賛成できません。
Posted by mats at 2009年03月19日 22:06
なるほど。だからこうなるのか。

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Posted by tester at 2009年03月19日 21:58
「お前はあまりに漢字の誤変換が多いから、もうblogで漢字を使うな」と言われるような感じですが。
Posted by syu at 2009年03月19日 21:56
エントリー見ればわかるけどPHPが敵じゃなくて、PHP使ってしかも有害な情報が公開され、それがしかもちゃんとチェックされることもなく、たくさんの人からリンクされ、しかもそれをgoogleが上位に表示していること。

もう一つプログラミングの世界だと、ソースコードの善し悪しで語るべきで、駄目だと言われてしかもそれが証明されてるなら、それは認めるべきだとおもうんだわ。 それを感情的にだとかで逃げていつまでたっても有害な情報を直さないで、それでよしとしてる。 「だからPHPって・・」って言われるのがわからないのかなーと
Posted by む at 2009年03月19日 21:54
言わせないでくれとか言いつつ、本当はもっと言いたがってるんだろうな。
Posted by s/悪化が良貨を/悪貨が良貨を/ at 2009年03月19日 21:04
>簡単なチェックだったら
て書いてるのに・・・
Posted by さざんか at 2009年03月19日 21:01
私は、PHP使いです。
話はよくわかりますが、だいぶ感情的では?と思いました。
PHPって敵?。
Posted by とりぷりい at 2009年03月19日 20:27
時代の流れを感じる
Posted by \test at 2009年03月19日 19:46
目くそ、鼻くそを笑うですね。わかります。
Posted by パッパラパーのパール at 2009年03月19日 19:34
正規表現について参考になりました。
ホンマにPHPとPHPerが嫌いなんだなと参考になりました。
Posted by ton at 2009年03月19日 19:27
ne+さん他、
Thx, fixed.
Dan the Typo Generator
Posted by at 2009年03月19日 19:17
コパンっておいしいよね
Posted by no at 2009年03月19日 19:15
「もうおまえらPHPerは正規表現をブログにうpするんじゃねえ! 」正規表現の指摘だけで事足りるところを、ヒステリックにPHP利用者に敷衍して非難する点にdanさんの限界を感じます。差別思想的な危険さえ感じます。
Posted by dots at 2009年03月19日 19:14
すなわち<code>addr-spec</code>、までで、
<code>From: <span style="background-color:#ffc">Anonymous &lt;nobody@example.com&gt;</cpan></code>、
すなわち<code>mailbox</code>は

で </span> と思われるとこが </cpan> になってる
Posted by ne+ at 2009年03月19日 19:06
PHPはたくさんの人が書けるようになっているためにこういう状況になったんだと思います。

・・・とはいえ、世の中広まれば広まるほどこんなもんだと思います。
Posted by kazuya at 2009年03月19日 19:04