首页 > 解决方案 > 正则表达式匹配任何数字,除了包含重复零的数字

问题描述

我想匹配我的数据中的大数字,但有时数据包含重复的零以表示强调,而不是电话号码。如何识别长度至少为 9 位且不包含任何重复零的数字(例如,至少 5 个)?例如:

比赛:给我打电话19083910893

不匹配:这个 x1000000000

我试过[0-9]+(?!0+)了,但这不是我需要的,因为负前瞻与[0-9]+. 不知何故,(\d)(?!0+)\d+在测试中工作,但我真的不明白为什么。

标签: pythonregex

解决方案


你可以使用

(?<!\d)(?!\d*0{5})\d{9,}

解释

  • (?<!\d)负向后看,不直接向左断言数字
  • (?!\d*0{5})断言右边不是 5 个零
  • \d{9,}匹配 9 个或更多数字

正则表达式演示


推荐阅读