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なら消せたんだが。
いじょ。