Làm cách nào để xóa ký tự lặp lại, ví dụ: thư k
trong cakkkke
cho nó là cake
bằng cách sử dụng regex?Xóa ký tự lặp lại
Trả lời
Sử dụng backrefrences
echo preg_replace("/(.)\\1+/", "$1", "cakkke");
Output:
cake
Giải thích:
(.)
chụp bất kỳ ký tự nào
\\1
là một backreferences cho nhóm chụp đầu tiên. Các .
ở trên trong trường hợp này.
+
làm cho trận đấu backreference ít nhất 1 (để nó phù hợp với aa, aaa, aaaa, nhưng không phải là một)
Thay thế nó với $1
thay thế văn bản phù hợp hoàn kkk
trong trường hợp này, với nhóm chụp đầu tiên, k
trong trường hợp này.
tốt đẹp nó hoạt động, bạn có thể giúp đỡ thêm bằng cách giải thích regex. Tôi không hiểu làm thế nào nó hoạt động: các dấu gạch chéo? 1? +? –
@Imran, kiểm tra câu trả lời cập nhật của tôi. Nếu bất cứ điều gì vẫn chưa rõ ràng, hãy hỏi. – Dogbert
Thông tin thêm về tham chiếu trở lại: http://www.explainth.at/en/re/backref.shtml – Dogbert
Sử dụng regex này "(.)\\1+"
và thay thế bằng $1
.
Đừng thực sự biết php, nhưng trong C#:
Console.WriteLine(Regex.Replace("cakkkkeee", "(.)\\1+", "$1"));
Câu trả lời này bằng cách nào đó không liên quan đến ** câu hỏi cụ thể này **. Mặc dù mẫu có thể áp dụng. –
Bạn muốn khớp một ký tự đầu tiên, theo sau là ký tự đó được lặp lại: (.)\1+
. Thay thế bằng ký tự đầu tiên. Các brackets tạo ra một backreference nhân vật đầu tiên, mà bạn sử dụng cả hai để phù hợp với các trường hợp lặp đi lặp lại và như là văn bản thay thế.
preg_replace('/(.)\1+/', '$1', $str);
- 1. ký tự lặp lại java
- 2. lặp lại nhiều ký tự regex
- 3. Làm cách nào để bạn xóa các ký tự lặp lại trong một chuỗi
- 4. Xóa các ký tự trùng lặp khỏi chuỗi
- 5. xóa [] Mảng ký tự
- 6. Xóa ký tự trước ký tự "."
- 7. Xóa ký tự Đã xóa
- 8. Kiểm tra các ký tự lặp lại trong một chuỗi
- 9. Viết regex để phát hiện các ký tự lặp lại
- 10. Lặp lại các ký tự trong chuỗi trong mysql
- 11. XSLT 1.0: Lặp lại các ký tự trong một chuỗi
- 12. PHP - lặp lại trên các ký tự chuỗi
- 13. lời Tìm kiếm với bất kỳ ký tự lặp lại
- 14. vim lặp lại tìm ký tự tiếp theo 'x'
- 15. Python Lặp lại thông qua các ký tự
- 16. Xóa ký tự bằng nút
- 17. Xóa ký tự sau chuỗi?
- 18. lặp lại chơi tự động
- 19. Cách sử dụng lại để tìm các ký tự liên tiếp, lặp lại
- 20. cách xóa tất cả văn bản sau lần lặp lại cuối cùng của một ký tự nhất định
- 21. Xóa ký tự khỏi chuỗi nếu ký tự bắt đầu bằng ký tự đó?
- 22. Xóa ký tự sau ký tự cụ thể trong chuỗi, sau đó xóa chuỗi con?
- 23. Xóa hai ký tự khỏi chuỗi
- 24. Làm cách nào để xoá các ký tự lặp lại trong chuỗi bằng R?
- 25. Lấy và xóa ký tự đầu tiên của chuỗi
- 26. Xóa ký tự cuối cùng của chuỗi
- 27. Xóa ký tự cuối cùng của edittext
- 28. Xóa ký tự đơn lẻ khỏi chuỗi?
- 29. Xóa ký tự khỏi đầu ra grep
- 30. cách xóa ký tự thành chuỗi?
bạn mong chờ điều gì ở các từ như 'nhìn, miễn phí, cây'? –
@Lawrence Cherone: tôi chỉ muốn thay thế nếu ký tự xuất hiện nhiều hơn n số lần. Tôi thường sẽ đặt giá trị n là 4 hoặc cao hơn –
sau đó 'cakkkke' sẽ vượt qua –