为什么这个regex模式不能按预期工作?

2021-09-16 23:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个regex模式来捕捉任何16位的数字字符串(每个数字组由一个连字符分隔),而不需要任何数字重复超过3次,中间有或没有连字符。你知道吗

所以我写的模式是

a=re.compile(r'(?!(\d)\-?\1\-?\1\-?\1)(^d{4}\-?\d{4}\-?\d{4}\-?\d{4}$)')

但是示例“5133-3367-8912-3456”即使在3重复4次时也会匹配。(消极前瞻部分有什么问题?)你知道吗