作者: Bruce.
日時: 2006/3/3(17:48)
Bruce.です。

タイトルの元ネタはひじょーにマイナーですのでわからないでいいです(笑)

某所で一部盛り上がった正規表現ネタで気が付いたのですが、

import re

patstr = r'''
  (
      \d{1,3}\.\d+$
    | \d{1,3} (?= (?:\d{3})+ (?:\.\d*)? $ )
  )
  (
      \d{3}
      (?:\.\d*)
    |
  )
'''
reg = re.compile(patstr, re.VERBOSE)

for s in [ '1234567890',
           '1234567890.12345',
           '1.123456789',
           '12.123456789',
           '123.123456789']:
    print "'%s'" % re.sub(reg, r'\1 \2', s)

のような正規表現で、空文字列にマッチする選択があるのが美しくない
と考えて2番目のキャプチャ部分を

  ( \d{3} (?: \. \d* ) )?

のようにすると、食わせるパターンによっては \2 が存在しないことで
例外が発生します。Perl や Rubyだと空文字列になるんですが、
こういうところも Python らしいといえば Python らしいのかも。

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

いじょ。