2

次の部屋番号の正規表現ステートメントを考え出すのに少し問題があります。

C001B --> C1B //remove "leading" zeros after first set of letters
C100B --> C100B
CB001B --> CB1B //remove "leading" zeros after first set of letters
001B --> 1B //remove leading zeros

基本的に、数字が前にないすべてのゼロを削除しますか?

4

2 に答える 2

2

このようなゼロを一致させるには、 などの否定的な後読みを使用(?<![^a-zA-Z])して、一致した領域の前に文字以外がないようにすることができます。これを一致の前に挿入することで、直前に来るものは含まれているパターンと一致しないことを保証します[^a-zA-Z]。これは、行の最初の一致もカウントします。

re.sub("(?<![^a-zA-Z])0+","",number)
于 2012-09-29T02:54:25.950 に答える
0

'ABC000'、 、 のようなすべてのパターンを見つけて'000'、s を削除し'0'ます。

return re.sub( "([^0-9]+|^)0+", r'\1', raw )
于 2012-09-29T03:09:45.280 に答える