查找带有可选前导零但不以其他数字开头的数字

时间:2019-06-19 08:48:47

标签: regex python-3.x

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

示例行:

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

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

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

当前匹配项:​​

 123456
A123456
A123456
0123456
0000123456
/123456

如何避免123456A123456/123456匹配(要从中仅匹配123456)。 AABCD可以是数字以外的任何其他字符!

所需匹配项:

123456
123456
123456
123456
0123456
0000123456
123456

最合适的正则表达式是什么?
预先感谢

1 个答案:

答案 0 :(得分:2)

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

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

请参见regex demo和正则表达式图:

enter image description here

详细信息

  • (?<!\d)-不允许在左边立即输入数字
  • 0*-零个或多个0数字
  • 123456-特定的数字字符串
  • (?!\d)-当前位置右边不允许有数字。