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

好吧,要匹配这样的零,您可以使用否定的lookbehind,例如(?<![^a-zA-Z]),以确保匹配的区域前面没有任何东西,而是一个字母。通过在匹配之前插入它,它将确保紧随其后的任何内容都与包含的模式不匹配,here[^a-zA-Z]也适用于行首的匹配。

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

找出所有的模式,如'ABC000', '000',并消除'0's。

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