ハイフンの有無にかかわらず、数字を16桁の数字の列(ハイフンで区切られた4つの数字の各グループ)を3回以上繰り返すことなくキャッチする必要がありました。なぜこの正規表現パターンは意図したとおりに動作しませんか?
だから私が書いたパターンは、「5133-3367-8912-3456」が3、4回繰り返してもマッチします
a=re.compile(r'(?!(\d)\-?\1\-?\1\-?\1)(^d{4}\-?\d{4}\-?\d{4}\-?\d{4}$)')
しかし、一例です。 (否定的な先読みセクションの問題は何ですか?)
正規表現をまったく使用する必要がありますか?これは、 'str.split'と' collections.Counter'を使って書くと理解しやすくなるようです。 – jonrsharpe