Một thời gian ngắn tôi trả lời this question về SO, nhưng tôi vẫn chưa tìm ra lý do tại sao câu trả lời của tôi hoạt động.Tại sao (?! ^) Tương đương với (? <! ^)?
Vì một lý do nào đó, dấu hiệu tiêu cực cho sự bắt đầu của chuỗi hoạt động giống như giao diện phủ định.
Ví dụ, trong PHP
preg_replace("/(?!^)12/", "ab", "12345"); // 12345
preg_replace("/(?<!^)12/", "ab", "12345"); // 12345
preg_replace("/(?!1)23/", "ab", "12345"); // 1ab45
preg_replace("/(?<!1)23/", "ab", "12345"); // 12345
Tôi biết nó không phải là câu hỏi hữu ích nhất từng được hỏi, nhưng điều này đã được cằn nhằn tôi trong một vài tuần.
Cảm ơn, đó là loại có ý nghĩa, nhưng tôi nghĩ rằng tôi cần một phần còn lại của đêm để cho nó chìm vào. –