作者: Kazuhiro NISHIYAMA
日時: 2006/3/05(02:54)
西山和広です。

>>> Fri,  3 Mar 2006 17:48:33 +0900 (JST) の刻に
>>> kbk@...(Bruce.) 氏曰く
> 
> のような正規表現で、空文字列にマッチする選択があるのが美しくない
> と考えて2番目のキャプチャ部分を
> 
>   ( \d{3} (?: \. \d* ) )?
> 
> のようにすると、食わせるパターンによっては \2 が存在しないことで
> 例外が発生します。Perl や Rubyだと空文字列になるんですが、
> こういうところも Python らしいといえば Python らしいのかも。

私の場合は、最初に (...)? の方を試して例外になってしまったので、
(...|) に変えました。

# と一応Pythonの話も入れつつ...


ちなみにRubyだとnilになるはずです。

if /\d+(\.\d+)?/ =~ '123'
  p [$&, $1] #=> ["123", nil]
end


> にしても末尾の空白を何とかできんものか。
> PerlやRubyなら消せたんだが。

PerlやRubyではどうやったのでしょうか?


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)