2011-12-08 6 views
5

私はregexを使って繰り返し文字列を減らそうとしています。例えば、私はターンしようとしている:Regex too greedy

Yaaaaaaaaay - > yaaay

HAHAHAHAHAHA - >ハハハ

toptoptoptop - > toptoptop

したがって、私は文字の並びを見たら3回以上繰り返し、長さ3のシーケンスに置き換えます。 これは私が抱えている問題です。のは、文字列

"hahahahahaha"
を考慮し、正規表現パターンを使用してみましょう:試合は hahaをされて終わる

(.+)\1{2,}

。 私は "ハ"と一致するように努力していますが、それを理解することはできません。私はまた、可能であれば、yaaaaaayのような言葉に拡張可能なソリューションを望んでいます。どんな助けもありがとう。

試合

答えて

8

代わりに非貪欲.+?を使用してください。

(.+?)\1{2,} 
+0

いい仕事です。非常にエレガントなソリューション –

+0

Ok ...うわー、ありがとう...私は(。+)?\ 1 {2、}を試みましたが、内側に疑問符が必要でした。申し訳ありませんn00bの質問 –