1

ユーザーが入力した文字列で 2 回以上繰り返される文字を見つけようとしています。私はこれを持っていますが、ifステートメントには入りません。

password = asDFwe23df333

s = re.compile('((\w)\2{2,})')

m = s.search(password)

if m:
     print ("Password cannot contain 3 or more of the same characters in a row\n")

     sys.exit(0)
4

2 に答える 2

3

次のように、正規表現の前に文字「r」を付ける必要があります。

s = re.compile(r'((\w)\2{2,})')

そうしないと、Python は通常バックラッシュを通常の文字列のエスケープ文字のように扱うため、すべてのバックスラッシュを 2 倍にする必要があります。これにより、正規表現は通常よりもさらに読みにくくなるため、Python のほとんどの正規表現にはその接頭辞が含まれています。

また、含まれているコードでは、パスワードは引用符で囲まれていませんが、コードに引用符が含まれていると想定しています。

于 2013-03-04T01:30:53.227 に答える
-1

文字列全体を単純に調べて、前の文字と等しい文字を見つけるたびに、値が 3 に達するまでカウンターをインクリメントすることはできませんか? キャラが今までと違うなら、カウンターを0に戻せばいいだけだ。

編集:または、次を使用できます。

s = 'aaabbb' re.findall(r'((\w)\2{2,})', s)

そして、2 行目で返されたリストに要素があるかどうかを確認します。

于 2013-03-04T01:22:39.170 に答える