想出以下房间号的正则表达式语句有点麻烦:
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
本质上,删除所有前面没有数字的零?
好吧,要匹配这样的零,您可以使用否定的lookbehind,例如(?<![^a-zA-Z])
,以确保匹配的区域前面没有任何东西,而是一个字母。通过在匹配之前插入它,它将确保紧随其后的任何内容都与包含的模式不匹配,here[^a-zA-Z]
也适用于行首的匹配。
re.sub("(?<![^a-zA-Z])0+","",number)
找出所有的模式,如'ABC000'
, '000'
,并消除'0'
s。
return re.sub( "([^0-9]+|^)0+", r'\1', raw )