In article <200303281112.AA02726 / moriq.moriq.com>, Kazuhiro Yoshida <moriq / moriq.com> writes: > when /^--\[no-\]([^\[\]=\s]*)(.+)?/ > > when /^--\[no-\]([^][=\s]*)(.+)?/ > > 私は元の > [^][=\s] > でもわかりやすいと思うのです。 > なぜなら正規表現はごちゃごちゃしているものだと端からなげているから…。 > > 要は [^\[\]=\s] と書いてもわかりにくい、と言いたいわけなんですが。 同程度の読みやすさ、読みにくさだと感じるわけですね。 では、完全に同じ読みやすさ、読みにくさだと感じますか? > 見易さは、見慣れの程度に依ると思います。 それが大きな要素であるのはたしかですね。 > この場合 [^...] という表現をひとつのかたまりとして捉えられるかという > ことが問題になりますが、例えば > 隣接する文字の親和度(の逆)を空白で示せるとすれば > > [^] [=\s] > > と見るか > > [^ ][=\s ] > > と見るか、はたまた > > [ ^][=\s ] > > と見るかに依るわけですね。 上記のように空白を入れる場合、[^][=\s] の中には空白を入れられる文字間 が [(1)^(2)](3)[(4)=(5)\(6)s(7)] と 7箇所存在します。ということは空白 を入れるか入れないかの全ての組合せは 2**7=128 種類あるわけですが、なぜ そのなかで上記の 3種類だけを示したのでしょうか? おそらく、上記以外の親和度を感じる人は少ないと予想されるからだと思うん ですが、なぜそうなのでしょう? > この見た目の感じ方は経験によって異なると思います。 ほとんどの人は 128種類中のたった 3種類のどれかと感じ、3種類のどれかは 経験によって異なるというわけですか? > それでは万人に受け入れられる書き方があるのか。 > 上記のような空白による親和度表現を受け入れて、 > 空白の有無によって意味を変えるというのもひとつの方法でしょう。 > x オプション時に有効になるとか。でも、いまいちですね。 merd の horizontal layout の regexp 版ですね。 http://merd.net/choices_syntax.html#horizontal_layout Ruby も空白の有無によって挙動が変わることが多々ありますし、別にいけな いとは思いませんが。 > 何も考えなくて一番楽なのは > \を伴わない英数字 はメタ文字ではない > \を伴う記号 はメタ文字ではない > の規則を厳格に適用することですかね。 この規則は昔から完全に適用されていると思いますが、どこか抜けがあります か? > 結局今のがバランスが取れてるのかも。 えぇと、「今」というのはいつを指してますか? -- [田中 哲][たなか あきら][Tanaka Akira]