【发布时间】:2017-09-04 09:08:18
【问题描述】:
我需要一个正则表达式模式来捕获任何 16 位数字字符串(每组由连字符分隔的四个数字组),而任何数字都不会重复超过 3 次,中间有或没有连字符。
所以我写的模式是
a=re.compile(r'(?!(\d)\-?\1\-?\1\-?\1)(^d{4}\-?\d{4}\-?\d{4}\-?\d{4}$)')
但即使 3 重复 4 次,示例“5133-3367-8912-3456”也会匹配。 (负前瞻部分有什么问题?)
【问题讨论】:
-
你需要使用正则表达式吗?使用
str.split和collections.Counter似乎更容易编写和理解。
标签: python regex python-3.x credit-card