2009-05-22 1 views
1

使用して整数:私はあることを第二の要素を変換したいパッド私はパッドにバージョン番号で特定の数のPythonのフレームワークで、正規表現を使用していた正規表現

10.2.11

をゼロで埋められ、それは次のようになります。

^(\d{2}\.)(\d{1})([\.].*) 
:私の正規表現は、このようになります

10.02.11

私はちょうど私がこの文字列を使用し、マッチンググループをバック逆流した場合:

\1\2\3 

私は私の好きな正規表現のテストハーネス(http://kodos.sourceforge.net/)を使用すると、私はパッドに第2のグループを、それを得ることができません。私は\ 1 \ 20 \ 3を試しましたが、2番目の参照は2ではなく、20と解釈されます。

私はこのライブラリを使用しているため、1つのライナーにする必要があります。ライブラリは、正規表現の文字列とそれを置き換えるために使用する文字列を受け取ります。

私は、一致するグループ文字列をエスケープする必要があると仮定していますが、わかりません。助けを前にありがとう。

答えて

1

.を正規表現から削除することはどうですか?

\1.0\2.\3 
+0

私は "ボックスの外側"の考えが大好きです。ありがとう! –

0

あなたのライブラリはnamed groupsをサポートしていますか?それはあなたの問題を解決するかもしれません。

(^\d(?=\.)|(?<=\.)\d(?=\.)|(?<=\.)\d$) 

をそして0\1で試合を置き換える:

+0

いいえ、名前付きグループはサポートされていません。 –

1

これを試してみてください。これにより、少なくとも2桁以上の任意の数になります。

+0

これは私の文字列と一致しませんでした:10.2.11 –

+0

それは私のために働いています:re.compile(r "(^ \ d(?= \))|(?<= \。)\ d(? )|(?<= \。)\ d $) ")。sub(r" 0 \ 1 "、" 10.2.11 ")'。 – Gumbo

3

どのように完全に異なるアプローチについて:

^(\d{2})\.(\d{1})[\.](.*) 

と交換してください?

nums = version_string.split('.') 
print ".".join("%02d" % int(n) for n in nums) 
+0

私はregex-freeである単純なPythonソリューションをupvoteすることを強く感じています。 (それがPerlならば、おそらく別の話だろう。) –

関連する問題