From: Masaki Suketa Date: 1997-12-17T09:45:23+09:00 Subject: [ruby-dev:1114] Re: Regexp#operators (Re: ruby 1.1b1 released) 助田です。 In message "[ruby-dev:1110] Re: Regexp#operators (Re: ruby 1.1b1" Shin-ichiro Hara writes : >原です。 > >でも若干表現力が落ちることになりますね。例えば「英数字ただし先頭は数字 >でない」は、「(?=foo)bar 方式」の & では、/\w+/ & /\D/ と書けますが 本題からずれますけど、 /\w+/ & /^\D/ と書くのとどう違うんでしょうか? >「str =~ /foo/ && str =~ /bar/ 方式」では書けません。しかしこっちの方が >がすっきりしていると言えるかもしれない。 そうか。確かに表現できないですね。この例の場合は、/[A-Za-z]\w+/とかや ればできますけどシンプルではないし、それを考えると /\w+/ & /\D/とかで きると嬉しい気もします。 str =~ /foo/ & /bar/ は str =~ /foo/ && str =~ /bar/ と「分解」はできない。 (str =~ /foo/) =~ /bar/ ( (str =~ /foo/) は /foo/にマッチした文字列 ) というようなイメージですね。 ruby では、 && と and とは優先順位の点で違いがあり、 正規表現の '&' は 'and' に近い意味で使われるという感じでしょうか。 私が違和感を感じるのは、'&'から連想するのは、'&&'だからでしょう。 でも '&' は 'and' の意味ですよ('&' 1つだと優先順位が低くて、'&&' 2つだと優先順位が高い)っていう風に考えれば、それはそれで納得で きます。 助田 雅紀(masaki.suketa@tonen.co.jp)