繁体   English   中英

如何在 Python 中编写正则表达式以删除字符串中间数字的前导零

[英]How do I write a Regex in Python to remove leading zeros for a number in the middle of a string

我有一个由两个字母和一个数字组成的字符串,我需要删除所有字母以及数字中的前导零。

例如:在测试串U012034 ,我想匹配的U0之初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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM