4

rePythonを使用して、特定の回数繰り返される同じ文字または数字のセットを見つけよ うとしています。(.)何が繰り返されるかを特定するのに問題なく機能しますが、異なる文字を繰り返さないようにする方法がわかりません。これが私が持っているものです:

re.search(r'(.){n}', str)

したがって、たとえば、 if9999からは一致しますが、。の場合は一致しません。 ありがとう99997n = 4n = 3

4

1 に答える 1

4

どうですか

(?:^|(?<=(.)))(?!\1)(.)\2{n-1}(?!\2)

この意志:

  • (?:^|(?<=(.))):次のことを確認してください:
    • ^:文字列の先頭にいます
    • (?<=(.)):文字列の先頭にいないか。次に、試合前にキャラクターをキャプチャして、に保存します\1
  • (?!\1)(.):一致しない文字を一致させ\1て保存します\2
  • \2{n-1}\2: n-1回一致
  • (?!\2)\2楽しみにしてマッチングできないことを確認してください

(これn-1は象徴的なものにすぎません。明らかに、これをn-1の実際の値に置き換えたいのであり、8-1何かではありません)。

重要な編集:以前のバージョンの正規表現( )は、一致の背後にある(.)\1{n-1}(?!\1)文字の一致を考慮できないため、機能しません。\1上記の正規表現はこの問題を修正します。

于 2012-04-21T05:01:29.427 に答える