• ベストアンサー

文字連続の検出手段

ある文字列を調べ、 その中で"同じ文字が10連続以上続いている部分"があるかどうかを検出したいのですが、 プログラム慣れしていないもので相当梃子摺っています。 どのように記述すれば良いのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 正規表現を使います。  「ある文字列が10個以上並んでいればヒット」という正規表現を書き、それがヒットしたかどうかで検査を行います。  正規表現では、() で囲まれた範囲を1つのブロックとして扱います。  また、連続個数を指定するのは {m,n} です。  答えはこちら。(できれば見ないで)  if ( $data =~ /(ある文字列){10,}/ ) {   # 10個連続している  } else {   # してない  }

その他の回答 (1)

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.2

正規表現を使います。 ・正規表現内で"()"を使うと、その部分を"\1"で参照できる ・{m,}を使うと直前の文字がm回以上繰り返す、ということを表現できる ということを踏まえ、(.)で任意の1文字を取得し、続けて同じ文字が9回以上出現するという正規表現を書きます。 if($line =~ /(.)\1{9,}/){   # 10回以上連続している }