2012-01-26 5 views
2

文字が3回以上繰り返される個々の文字の繰り返しを探したい。 "444","sss"および"------"を同定し、"dd"を同定すべきではない。私のように解決策を与えた前回のStackOverflowの質問に出くわした正規表現を使用して文字の繰り返しを確認する

regexp = re.compile(r"(.)\1") 

はしかし、これは、同じ文字の2回以上の繰り返しを識別します。 私は(r"(.)\{3,}")で動作しませんでした、そして(r"(.)\3")でエラーが発生しました。 誰かが私にこれの正しい正規表現を教えてくださいできますか?

答えて

5

(r"(.)\1\1")(またはさらに(r"(.)\1\1+"))が必要です。

正規表現は「同じ文字をもう一度一致させて(\1)、同じ文字を3回目に一致させます(私がここにいる最初の変種の場合) (上記の第2の変形例の場合)

+0

re.findall(r)(。)\ 1 \ 1 "、st)'のようにst = "111" – RanRag

+1

@RanRag:これは、カッコが最初の文字の周りにあるからです。 '(r"(。{3、})を使用すると、出力は '['1']'もしあなたが全体をキャプチャする必要があれば – Borealid

+0

ええ、それを理解しました。 – RanRag

関連する問題