2024-10-05 14:30:49 发布
网友
在为以下房间号创建regex语句时遇到一些问题:
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
从本质上讲,去掉所有不带数字的零?在
找到所有的模式,比如'ABC000','000',并消除{}s
'ABC000'
'000'
return re.sub( "([^0-9]+|^)0+", r'\1', raw )
好吧,为了匹配这样的零,您可以使用一个否定的lookbehind,比如(?<![^a-zA-Z]),以确保匹配的区域前面除了一个字母之外没有任何东西。通过在匹配之前插入它,它将确保紧跟在前面的任何内容都与包含的模式不匹配,这里是[^a-zA-Z],它也计算一行开头的匹配。在
(?<![^a-zA-Z])
[^a-zA-Z]
re.sub("(?<![^a-zA-Z])0+","",number)
找到所有的模式,比如}s
'ABC000'
,'000'
,并消除{好吧,为了匹配这样的零,您可以使用一个否定的lookbehind,比如
(?<![^a-zA-Z])
,以确保匹配的区域前面除了一个字母之外没有任何东西。通过在匹配之前插入它,它将确保紧跟在前面的任何内容都与包含的模式不匹配,这里是[^a-zA-Z]
,它也计算一行开头的匹配。在相关问题 更多 >
编程相关推荐