首页 > 解决方案 > 查找带有可选前导零但不以其他数字开头的数字

问题描述

我需要找到一个带有可选前导零但不以另一个数字开头或结尾的特定数字。

样品线:

"123456, 123456A, A123456, A123456A, 0123456, 9123456, 1234567, ABCD0000123456 or /123456"

我目前正在使用的正则表达式:

"0*?[^1-9]123456(?!\d)"

当前比赛:

 123456
A123456
A123456
0123456
0000123456
/123456

如何避免123456,A123456/123456匹配(只想123456从这些匹配)。A或者ABCD可以是除数字以外的任何其他字符!

期望的匹配:

123456
123456
123456
123456
0123456
0000123456
123456

什么是最好的正则表达式?
提前致谢

标签: regexpython-3.x

解决方案


您需要在模式之前删除[^1-9]并使用(?<!\d)否定的lookbehind 0*

(?<!\d)0*123456(?!\d)

请参阅正则表达式演示和正则表达式图:

在此处输入图像描述

细节

  • (?<!\d)- 不允许紧靠左边的数字
  • 0*- 零个或多个0数字
  • 123456- 一个特定的数字字符串
  • (?!\d)- 当前位置右侧不允许有数字。

推荐阅读