もりきゅうです。

"NAKAMURA, Hiroshi" <nakahiro / sarion.co.jp> wrote:
> [...\]\[...] よりも [...\[\]...] のほうが読み易い、ということですよね。
> これも同感です。この理由は、それなりにもっともらしく説明できそうですが、
> 読み易い記法に誘導するような実装として反映させる、のは難しそうですね。

> # 誰かうまい魔法を思いつきませんか。

      when /^--\[no-\]([^\[\]=\s]*)(.+)?/

      when /^--\[no-\]([^][=\s]*)(.+)?/

私は元の
[^][=\s]
でもわかりやすいと思うのです。
なぜなら正規表現はごちゃごちゃしているものだと端からなげているから…。

要は [^\[\]=\s] と書いてもわかりにくい、と言いたいわけなんですが。


見易さは、見慣れの程度に依ると思います。
この場合 [^...] という表現をひとつのかたまりとして捉えられるかという
ことが問題になりますが、例えば
隣接する文字の親和度(の逆)を空白で示せるとすれば

[^]            [=\s]

と見るか

[^      ][=\s      ]

と見るか、はたまた

[      ^][=\s      ]

と見るかに依るわけですね。
この見た目の感じ方は経験によって異なると思います。

それでは万人に受け入れられる書き方があるのか。
上記のような空白による親和度表現を受け入れて、
空白の有無によって意味を変えるというのもひとつの方法でしょう。
x オプション時に有効になるとか。でも、いまいちですね。


で、さっきひらめいたのですが、

[:alpha:]

このような文字クラスの表現法(何と呼ぶのか知らないのですが)を
拡張して

Regexp.charset[:hoehoe] = '][=\s'
Regexp.charset[:not_hoehoe] = '^][=\s'

このように指定したら

[^[:hoehoe:]]
[[:not_hoehoe:]]

このように書けると(この例に限れば)見やすいと思うのですが、
いかがでしょうか。


正規表現は正規表現で完結してこその正規表現なのかもしれませんが…。

[...] の代わりに (?[...) とか(うわっ閉じてねえよ!)
(?'...) とか (?'...') といった別のかっこ表現を用意してあげるとか。


何も考えなくて一番楽なのは
  \を伴わない英数字 はメタ文字ではない 
  \を伴う記号 はメタ文字ではない 
の規則を厳格に適用することですかね。


結局今のがバランスが取れてるのかも。
公開すると小人さんが綺麗に書き直してくれてるという魔法。だめだめ。

# メーリングリストは究極デバッガ (Powered by 小人さん) なのかも…
# いや Powered by Debuggin' knights のほうがかっこええ。
# でも lonely Debuggin' nights はいややね…
# そうやこれが言いたかっただけなんや…

----
YOSHIDA Kazuhiro  moriq / moriq.com  http://www.moriq.com/