[英]How do I write a Regex in Python to remove leading zeros for a number in the middle of a string
我有一个由两个字母和一个数字组成的字符串,我需要删除所有字母以及数字中的前导零。
例如:在测试串U012034
,我想匹配的U
和0
之初012034
。
到目前为止,我有[^0-9]
来匹配任何不是数字的字符,但我不知道如何同时删除数字中的前导零。
我知道我可以使用int(re.sub("[^0-9]", "", test_string)
类的方法分多个步骤完成此操作,但我需要在一个正则表达式中完成此过程。
你可以在 Python 中使用这个re.sub
:
string = re.sub(r'^[a-zA-Z]*0*|[a-zA-Z]+', '', string)
解释:
^
: 开始[a-zA-Z]*
: 匹配 0 个或多个字母0*
L:匹配 0 个或多个零|
: 或者[a-zA-Z]+
: 匹配 1+ 个字母您可以使用
re.sub(r'^\D*0*', '', text)
请参阅正则表达式演示。 细节
^
- 字符串的开始\\D*
- 任何零个或多个非数字字符0*
- 零个或多个零。参见Python 演示:
import re
text = "U012034"
print( re.sub(r'^\D*0*', '', text) )
# => 12034
如果第一个数字后有更多文本,请使用
print( re.sub(r'^\D*0*(\d+).*', r'\1', text) )
请参阅此正则表达式演示。 详情:
^
- 字符串的开始\\D*
- 零个或多个非数字0*
- 零个或多个零(\\d+)
- 第 1 组:一位或多位数字(使用(\\d+(?:\\.\\d+)?)
匹配 float 或 int 值)替换为第 1 组值。
这能满足您的需求吗?
re.sub("[^0-9]+0*", "", "U0123")
>>> '123'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.