2011-12-08 32 views
5

Tôi đang cố gắng sử dụng regex để giảm chuỗi ký tự lặp lại. Ví dụ, tôi đang cố gắng để biến:Regex quá tham lam

Yaaaaaaaaay -> yaaay

hahahahahaha -> hahaha

toptoptoptop -> toptoptop

Như vậy, nếu tôi thấy một chuỗi các ký tự lặp lại 3 lần hoặc nhiều hơn, thay thế nó bằng một chuỗi có chiều dài 3. Đây là vấn đề tôi gặp phải. Hãy xem xét các chuỗi

"hahahahahaha"
và sử dụng các mẫu biểu thức chính:

(.+)\1{2,}

Trận đấu kết thúc lên được haha. Tôi đã bỏ qua việc cố gắng để chỉ phù hợp với "ha", nhưng không thể tìm ra. Tôi cũng muốn giải pháp có thể mở rộng thành các từ như yaaaaaay nếu có thể. Bất kỳ trợ giúp sẽ được đánh giá cao.

trận

Trả lời

8

Sử dụng một tổ chức phi tham lam .+? để thay thế.

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

Công việc tuyệt vời; giải pháp rất thanh lịch –

+0

Ok ... wow cảm ơn ... Tôi đã thử (. +)? \ 1 {2,} nhưng tôi cần dấu hỏi ở bên trong. Xin lỗi vì câu hỏi n00b –

Các vấn đề liên quan