我有一个由两个字母后跟一个数字组成的字符串,我需要删除所有字母以及数字中的前导零。
例如:在测试字符串U012034
中,我要匹配U
和012034开头的
.0
到目前为止,我有 [^0-9]
来匹配任何不是数字的字符,但我不知道如何删除数字中的前导零。
我知道我可以使用 int(re.sub("[^0-9]", "", test_string)
之类的多个步骤执行此操作,但我需要完成此过程在一个正则表达式中。
最佳答案
你可以使用
re.sub(r'^\D*0*', '', text)
见 regex demo . 详情
^
- 字符串开始\D*
- 任何零个或多个非数字字符0*
- 零个或多个零。
见 Python demo :
import re
text = "U012034"
print( re.sub(r'^\D*0*', '', text) )
# => 12034
如果第一个数字后面还有更多文字,请使用
print( re.sub(r'^\D*0*(\d+).*', r'\1', text) )
见 this regex demo . 详情:
^
- 字符串开始\D*
- 零个或多个非数字0*
- 零个或多个零(\d+)
- 第 1 组:一个或多个数字(使用(\d+(?:\.\d+)?)
匹配浮点或整数值)- `.* - 字符串的其余部分。
替换的是第 1 组的值。
关于python - 如何在 Python 中编写正则表达式以删除字符串中间数字的前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68168540/