目標: 数値 (非常に長く、0 より大きい可能性があります) が与えられた場合、その数値の末尾にある 0 を削除して、最も意味のない 5 桁を取得したいと考えています。
これを正規表現で解決しようとしましたが、RegexBuddy の助けを借りて、次のようになりました。
[\d]+([\d]{0,4}+[1-9])0*
しかし、Pythonはそれをコンパイルできません。
>>> import re
>>> re.compile(r"[\d]+([\d]{0,4}+[1-9])0*")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/re.py", line 188, in compile
return _compile(pattern, flags)
File "/usr/lib/python2.5/re.py", line 241, in _compile
raise error, v # invalid expression
sre_constants.error: multiple repeat
問題は "{0,4}" の後の "+" です。Python では動作しないようです (2.6 でも)
動作する正規表現を作成するにはどうすればよいですか?
PS: 10 で割り始めて、余り n%100000 を使用できることは知っていますが、これは正規表現に関する問題です。