Mục đích dường như là để "sạch" UTF- 8 văn bản được mã hóa. Phần trong nhóm chụp,
([\x00-\x7F] | [\xC0-\xDF][\x80-\xBF] | [\xE0-\xEF][\x80-\xBF]{2} | [\xF0-\xF7][\x80-\xBF]{3})
... gần khớp với chuỗi byte UTF-8 hợp lệ, có thể dài từ 1 đến 4 byte. Giá trị của byte đầu tiên xác định khoảng thời gian mà chuỗi byte cụ thể sẽ là.
Vì thay thế đơn giản là '$1'
, các chuỗi byte hợp lệ sẽ được cắm lại ngay vào đầu ra. Bất kỳ byte nào không khớp với phần đó sẽ được thay thế bằng dấu chấm (.
) và bị xóa hiệu quả.
Điều quan trọng nhất cần biết về kỹ thuật này là bạn không bao giờ phải sử dụng nó. Nếu bạn tìm thấy các chuỗi byte UTF-8 không hợp lệ trong văn bản được mã hóa UTF-8 của bạn, nó có nghĩa là một trong hai điều: nó không thực sự là UTF-8, hoặc nó bị hỏng. Thay vì "làm sạch" nó, bạn nên tìm hiểu làm thế nào nó đã bẩn và sửa chữa rằng vấn đề.
Nguồn
2011-08-17 18:29:36
Bạn không hiểu phần nào của nó? Bối cảnh là gì? –
wooooah !! , regex của bạn đã cho tôi goosebumps :-) –